gpt4 book ai didi

java - 一遍又一遍地运行相同的junit测试的简单方法?

转载 作者:IT老高 更新时间:2023-10-28 11:22:58 25 4
gpt4 key购买 nike

正如标题所说,我正在寻找一种简单的方法来使用 Eclipse 自动连续多次运行 JUnit 4.x 测试。

一个例子是连续运行 10 次相同的测试并报告结果。

我们已经有一种复杂的方法来做到这一点,但我正在寻找一种简单的方法来做到这一点,以便我可以确定我一直在尝试修复的不稳定测试保持不变。

理想的解决方案是我不知道的 Eclipse 插件/设置/功能。

最佳答案

最简单的(因为需要最少的新代码)方法是将测试作为参数化测试运行(使用 @RunWith(Parameterized.class) 注释并添加一个方法提供 10 个空参数)。这样框架将运行 10 次测试。

这个测试需要是类中唯一的测试,或者更好的是所有测试方法应该需要在类中运行 10 次。

这是一个例子:

@RunWith(Parameterized.class)
public class RunTenTimes {

@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}

public RunTenTimes() {
}

@Test
public void runsTenTimes() {
System.out.println("run");
}
}

使用上述方法,甚至可以使用无参数构造函数来实现,但我不确定框架作者是否有意这样做,或者将来是否会中断。

如果您正在实现自己的运行器,那么您可以让运行器运行测试 10 次。如果您使用的是第三方运行器,那么在 4.7 中,您可以使用新的 @Rule 注释并实现 MethodRule 接口(interface),以便获取语句并执行它 10在 for 循环中的次数。这种方法目前的缺点是 @Before@After 只运行一次。这可能会在 JUnit 的下一个版本中发生变化(@Before 将在 @Rule 之后运行),但无论您将作用于对象的同一实例( Parameterized 运行者不正确的东西)。这假定您运行该类的任何运行器都能正确识别 @Rule 注释。仅当它委托(delegate)给 JUnit 运行器时才会出现这种情况。

如果您正在使用无法识别 @Rule 注释的自定义运行程序运行,那么您真的不得不编写自己的运行程序来适本地委托(delegate)给该运行程序并运行 10 次.

请注意,还有其他可能解决此问题的方法(例如 Theories 运行者),但它们都需要运行者。不幸的是,JUnit 目前不支持运行层。那是一个束缚其他运行者的运行者。

关于java - 一遍又一遍地运行相同的junit测试的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1492856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com