一遍又一遍地运行相同的 junit 测试的简单方法?
就像标题所说,我正在寻找一些简单的方法来使用Eclipse连续多次自动运行JUnit 4.x测试。
例如,连续运行同一测试 10 次并报告结果。
我们已经有一个复杂的方法来做到这一点,但我正在寻找一种简单的方法来做到这一点,这样我就可以确定我一直试图修复的片状测试保持固定。
一个理想的解决方案是我不知道的Eclipse插件/设置/功能。
就像标题所说,我正在寻找一些简单的方法来使用Eclipse连续多次自动运行JUnit 4.x测试。
例如,连续运行同一测试 10 次并报告结果。
我们已经有一个复杂的方法来做到这一点,但我正在寻找一种简单的方法来做到这一点,这样我就可以确定我一直试图修复的片状测试保持固定。
一个理想的解决方案是我不知道的Eclipse插件/设置/功能。
执行此操作的最简单(因为所需的新代码最少)方法是将测试作为参数化测试运行(使用 a 进行注释并添加一个方法以提供 10 个空参数)。这样,框架将运行测试 10 次。@RunWith(Parameterized.class)
此测试需要是类中唯一的测试,或者最好将所有测试方法都需要在类中运行 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 中,您可以使用新的注释并实现接口,以便它获取语句并在 for 循环中执行 10 次。这种方法的当前缺点是并且只运行一次。这可能会在下一个版本的 JUnit 中发生变化(将在 之后运行),但无论你将对对象的同一实例执行操作(对于运行器来说并非如此)。这假设您正在运行类的任何运行器都能正确识别注释。只有当它委托给JUnit跑步者时,情况才会如此。@Rule
MethodRule
@Before
@After
@Before
@Rule
Parameterized
@Rule
如果您使用无法识别注释的自定义运行器运行,那么您真的不得不编写自己的运行器,该运行器适当地委派给该运行器并运行10次。@Rule
请注意,还有其他方法可以潜在地解决这个问题(例如Theory runner),但它们都需要一个runner。不幸的是,JUnit目前不支持运行器层。这是一个将其他跑步者锁起来的跑步者。