JMockit多通用接口injectable导致缺少injectable for字段



我试图模拟在一个类中具有多个选项的通用接口资源。我发现了一些传递命名资源的东西,那就是将变量命名为与资源上的name参数相同。但是,如果我有两个具有相同名称(但不同的泛型类型)的@Injectable字段,我就不能对两者都这样做。有办法解决这个问题吗?

@Service("SourceDescriptionService")
public class SourceDescriptionServiceImpl implements CrudService<LnssDescription> {
    @Resource(name = "LnssCrudRepository")
    private LnssCrudRepository<LnssDescription> descriptionRepository;
    @Resource(name = "SourceRepository")
    private SourceRepository sourceRepository;
    @Resource(name = "LnssCruRepository")
    private LnssCruRepository<LnssState> stateRepository;
    @Resource(name = "LnssCruRepository")
    private LnssCruRepository<LnssVariant> variantRepository;

和我的测试尝试:

@Tested
private SourceDescriptionServiceImpl sut;
@Injectable
private SourceRepository SourceRepository;
@Injectable
private LnssCrudRepository<LnssDescription> LnssCrudRepository;
@Injectable
private LnssCruRepository<?> LnssCruRepository;

我尝试了CruRepository接口上的其他变体,如参数化LnssState,然后将LnssVariant作为错误,或者删除参数化,这只是回到错误状态。

错误:

java.lang.IllegalStateException: Missing @Injectable for field "com.ln.sourceset.model.repository.LnssCruRepository<com.ln.sourceset.model.data.LnssState> stateRepository" in SourceDescriptionServiceImpl

任何帮助都将非常感激!谢谢。

让你的测试可注入名称与你正在测试的类中的依赖项相同。

正在测试的类有以下依赖项

@Inject
@Named("somename")
private SomeClass somename;

可在你的测试用例中测试上面的类需要有下面的。

@Injectable
private SomeClass somename;

希望能有所帮助

相关内容

  • 没有找到相关文章

最新更新