java - JUnit @Rule 和 ExpectedException.none() 线程安全吗?
问题描述
我正在编写一个 JUnit 测试,我希望它测试是否引发了异常,因此编写了以下 Java 测试类(这不是我编写的实际 JUnit 测试,而是说明我试图理解的点)。
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testMethod1() {
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Parameter cannot be null");
UtilClass.getSampleValue(null, new Object());
}
@Test
public void testMethod2() {
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Parameter cannot be null");
UtilClass.getSampleValue(new Object(), null);
}
@Test
public void testMethod3() {
final Object actual = UtilClass.getSampleValue(new Object(), new Object());
assertNotNull(actual);
}
当我将此发送给代码审查时,一些人在审查中写道,使用@Rule
意味着测试方法不是线程安全的,并且将来如果我们想移动到并行运行测试方法,它将无法工作,因为测试没想到异常居然会看到异常。这是真的?有解决方法吗?我在网上找不到任何关于此的文档。
解决方案
推荐阅读
- php - Laravel 7 cron 作业不适用于 cpanel(共享主机)
- c++ - 在 Ubuntu 18.04.4 LTS 虚拟机中为 Visual Studio Code C++ 项目安装 TensorFlow 时出现问题
- c# - unity获取raycast的XYZ
- c# - Websocket 不适用于 Azure 应用服务
- c# - Forge 中的外部 iLogic 规则
- python - 条件为假时如何返回for循环顶部?
- python - 将列值转换为行
- java - 使用 Chaquopy 在 Android Studio 中的 Java 类活动中运行 Python 脚本
- c# - 无法在 Unity3D 中向我的对象添加强制
- webserver - ESP8266 一种确定是否与客户端进行新会话的方法