我有一个init()方法,该方法使用注入的私有实例<>。如何使用JUnit或Mockito测试此类?我试图制作一些假的类并将其添加到列表中,然后将此列表设置为我的私有字段,但是出现此错误
java.lang.IllegalArgumentException:无法设置javax.enterprise.inject.Instance字段......
MyClass是:
@Singleton
@Startup
public class HandlerManager {
@Any
@Inject
private Instance<RollbackHandler<RollbackData>> handlers;
private RollbackHandler<RollbackData> rollbackHandler;
@PostConstruct
public void init() {
for (RollbackHandler<RollbackData> bean : handlers) {
//do something
}
}
}
答案 0 :(得分:0)
除非您使用自定义工作,否则任何注释都不会由框架处理。您将必须在测试中使用@Mock将所有这些依赖项定义为模拟,并在测试方法(如setup())之前调用injectMocks()。这是一个多方面的问题。
答案 1 :(得分:0)
when(provider.iterator()).thenReturn(list.iterator);
为我工作。