java - JUnit 5 具有相同参数的多个参数化测试 - 迁移参数化
问题描述
以前在 JUnit4 中,您可以执行以下操作:
@RunWith(Parameterized.class)
public class MyTest
{
private final int number;
public MyTest(int number) {
this.play = play;
}
@Test
public void testIsEven() {
assertEquals(true, number % 2 == 0);
}
@Test
public void testIsNotOdd() {
assertEquals(false, number % 2 != 0);
}
@Parameterized.Parameters
public static int[] data() {
return new int[] { 2, 4, 6 }
}
}
这将通过数组,MyTest
用每个值实例化,然后在每个实例上运行所有测试。有关详细信息,请参阅参数化文档。
现在在 JUnit5 中,情况发生了变化,根据新文档,您必须编写相同的测试,如下所示:
public class MyTest {
@ParameterizedTest
@MethodSource("data")
public void testIsEven(int number) {
assertEquals(true, number % 2 == 0);
}
@ParameterizedTest
@MethodSource("data")
public void testIsNotOdd(int number) {
assertEquals(false, number % 2 != 0);
}
public static int[] data() {
return new int[] { 2, 4, 6 }
}
}
您必须为每个单独的测试重复参数和数据源。有没有办法像在 JUnit4 中那样做类似的事情,其中参数化测试在使用不同参数实例化的类的实例上工作?
解决方案
(评论摘要)
当前(版本 5.3.2 和 5.4.0-M1)不支持对测试类中的所有/多个方法重用相同的参数。但这已经是 JUnit 团队正在处理的请求,请参阅
推荐阅读
- vb.net - 一些简单的东西 - 在标签中显示数字
- tsql - SQL Server:选择查询工作,但不是更新的。子查询问题
- r - 使用排名顺序计算R中的死亡率数据
- ionic4 - 为 Android 构建 Ionic 产品
- vba - 尝试运行函数时会提示选择宏
- python - 将结果转换为对象数组 - Python
- hyperion - Hyperion Essbase 脚本方法
- hibernate - Spring数据REST PreInsertEventListener没有触发?
- python-3.x - 如何在同一个脚本中使用多个 asyncio websocket?
- python - 如何并排比较两个交互式散景地图?