java - Assertions.assertThrows 返回 void 而它必须返回 Throwable | JUnit 5
问题描述
我正在使用JUnit 5
库,我尝试使用 assertThrows 并获取引发的异常以获取异常消息。我有这样一段代码:
import org.junit.jupiter.api.Assertions;
//import org.junit.Assert;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.*;
public class Tests {
private static void execute() throws Exception {
ArrayList<String> filter = ListString.filter(new ArrayList<String>(Arrays.asList("1", "2", "3")), "4");
}
@Test
public void listStringTest() {
// This part doesn't work
Throwable throwable = Assertions.assertThrows(Exception.class, Tests::execute);
assertEquals("Exception texnt", throwable.getMessage());
}
}
我收到以下消息:
但是文档说 assert throws 返回T extends Throwable
,而不是void
:
我在哪里做错了?
解决方案
您的类路径中可能有一个非常旧版本的 JUnit Jupiter。
里程碑版本 5.0.0-M3(2016 年 11 月,发行说明)将返回类型添加到assertThrows
. 您的类路径中的版本似乎比这更旧。
确保您使用的是最新版本的 JUnit。
推荐阅读
- php - 即使我在代码中编写了其他内容,也无法打开“NANphp”
- sql - 使用 Join 根据过滤器 WHERE 包含所有行
- terraform - 将计数更改为 for_each Terraform
- angular - Angular OAuth2 检查 Guard 中的权限
- c# - 在返回导航中跳过 xamarin 表单中的页面
- python - 尝试通过网状包在 R 中使用 Python Gekko 时出错
- tfs - TFS2015 看不到项目文件,不能签入任何东西
- oracle - 我可以在 Oracle 数据库的 EXCEPTION 处理程序中获取 SQLSTATE 值吗?
- c++ - rapidjson 擦除数组并释放内存
- php - PhpStorm 调试问题