java - 如何为执行异常编写测试
问题描述
我有以下方法。它工作正常并且能够测试代码的其余部分。但是我如何测试/模拟捕获 ExecutionException 的那个 catch 块?我想降落在那个接球区。我正在使用 Mockito 来模拟其他部分,但在这种情况下我不能模拟 try 块,或者我可以吗?
private static ExecutorService executor = Executors.newFixedThreadPool(1);
public Detail create(String num){
return new Detail(){
private final Future<String> number = executor.submit(() -> someAutowiredClass.method(num));
@Override
public String getNumber() {
try {
return this.number.get();
} catch (InterruptedException e) {
throw new CustomException();
} catch (ExecutionException e) {
throw new CustomException2();
// I want to land inside here for my test. How do I do that?
}
}
};
}
这就是我目前为中断部分编写测试的方式。
@Test
public void myTest() {
String num = "123";
String number = "456";
when(someAutowiredClass.method(num)).thenReturn(456);
Detail detail = myClass.create(num);
Thread.currentThread().interrupt();
try {
assertEquals(number, detail.getNumber());
}catch (CustomException e){
// some assertions.
}
}
解决方案
推荐阅读
- assembly - 装配阵列访问
- shopify - Shopify 从链接获取导航句柄
- html - 箱形阴影未显示
- c - 使用递归找到用户定义矩阵的行列式
- java - 创建叶病检测安卓应用程序的第一个过程是什么?
- php - 找到相同的输入数据并将其替换为新数据,然后再将其写入 txt 输出
- c++ - 如何使用一个 std::thread 对象来运行 2 个顺序事件(函数)?
- regex - 正则表达式匹配表达式以获取两个分隔符之间的单词(有或没有值)
- c# - 调用 UserDeletingRow 事件并回答“否”后,行从网格视图中消失,如果我想删除它
- php - 在 JSON 响应 PHP 中列出值