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 的实例。
我知道两种解决方案
- 删除所有注解,改为使用构造函数注入。但这是我无法改变的,也不是我能控制的。
- 为 Executor 创建一个 setter,然后在测试用例中设置它。(似乎更像是一个围绕 tbh 的工作)
- 将执行程序包装在功能接口中(似乎对测试用例进行了过度设计)
问题是,有没有一种方法可以通过注释或通过init
我可以注入特定的 Executor 实例?
解决方案
推荐阅读
- python - Tokenize math expressions without importing any module in python
- r - 利用函数的输入值在 R 中生成多个 df
- android - Android - 屏幕键盘的语言
- regex - 如何使用 CURL 运行 GraphQL 搜索查询(使用正则表达式)?
- json - 如何在 SpringBoot 中将 JSON 请求体转换为 SOAP 请求体?
- c - 是否有必要在 for 循环之外有一个 return 语句?在外面返回,我没有错误
- visual-studio-code - 如何在 Vs 代码中更改源代码控制的背景?
- typescript - 为什么从 TypeScript 接口中删除只读?
- flutter - 在 Flutter 中验证越南语名称
- dart - Dart:假设来自 T 函数(TModel 模型)表达式的泛型类型