java在测试期间向类构造函数插入特定值
我使用Google Guice
作为DI框架Junit 4
&Mockito 2.x
用于测试。我有一个类,我在其中使用@Inject
注释来连接依赖项。现在作为测试的一部分,我使用@Mock
和@InjectMocks
注入所有依赖项。代码如下:
public class SampleClass {
@Inject
private ClassA classA;
@Inject
private ClassB classB;
@Inject
private Executor javaThreadExecutor;
public void doSomething() {
// some logic
javaThreadExecutor.execute(()-> {
// some logic
})
}
}
下面是我用于测试的代码:
public class SampleClassTest {
@Mock
private ClassA classA;
@Mock
private ClassB classB;
private Executor javaThreadExecutor = new Executor(10);
@InjectMocks
private SampleClass toTestInstance;
}
现在的问题是,我希望将执行器作为new Executor(10)
传递,而不是模拟实例。但我似乎找不到让mockito使用Executor实例的方法
我知道两种解决办法
- 删除所有注释,改为使用构造函数注入。但这是我无法改变的,也是我无法控制的李>
- 为执行器创建一个setter,然后在测试用例中设置它(看起来更像是围绕tbh展开的工作)
- 将执行器包装在功能接口中(对于测试用例tbh来说似乎过于工程化)
问题是,有没有一种方法可以通过注释或通过init
注入Executor的特定实例
共 (0) 个答案