java - java工厂类测试模拟实现列表
问题描述
我创建了一个工厂来提供IMyProcessor
基于一些布尔标志的实例。下面用我的两个实现填充地图。
@Component
public class MyProcessorFactory {
private static final Map<String, IMyProcessor> processorServiceCache = new HashMap<>();
@Value("${processor.async:true}")
private boolean isAsync;
public MyProcessorFactory(final List<IMyProcessor> processors) {
for (IMyProcessor service : processors) {
processorServiceCache.put(service.getType(), service);
}
}
public IMyProcessor getInstance() {
IMyProcessor processor = isAsync ? processorServiceCache.get("asynchronous") : processorServiceCache.get("synchronous");
return processor;
}
}
我现在正在尝试使用 Junit5 编写单元测试,但我正在努力设置实现列表:
我尝试了以下方法:
@ExtendWith(MockitoExtension.class)
class ProcessorFactoryTest {
@InjectMocks
private MyProcessorFactory myProcessorFactory;
@Test
void testAsyncIsReturned() {
}
@Test
void testSyncisReturned() {}
}
我想根据布尔标志异步真/假进行测试,返回正确的实现。
了解您如何编写此类测试用例将很有帮助。我将接口的实现作为构造注入自动装配到列表中,然后使用字符串键添加到地图中。
除了答案之外,我对其他可能使测试更容易的想法/重构持开放态度。
解决方案
推荐阅读
- python - Python Eclipse PyDev
- r - 用结果在 r 中分割文件 ANOVA
- ios - 带有大标题的 UISearchController 在选项卡栏中崩溃,“只有一个带有顶部边界的调色板可以在过渡之外处于活动状态”
- reactjs - UI 状态与 Redux 状态
- node.js - nodejs中的车把助手不起作用
- ios - Appcelerator 钛图像在列表视图中的 IOS 中向下或向上滚动时消失
- c# - 使用 TraceSource 跟踪和记录到文件
- r - 使用 R 分析的 Django Web 应用程序
- ruby - Rubocop atom linter 不起作用
- java - 程序在数组中找到最不常见的条目