正如标题所说,我正在寻找一些简单的方法来使用JUnit自动连续多次运行Eclipse4.x测试。
例如,连续运行相同的测试10次,然后报告结果。
我们已经有了一种复杂的方法来做这件事,但我正在寻找一种简单的方法,这样我就可以在某种程度上确定我一直试图修复的不稳定的测试是可以修复的。
理想的解决方案是Eclipse插件/设置/功能,但我不知道。
发布于 2017-07-26 16:37:51
在JUnit 5中,我可以使用@RepeatedTest注释来解决这个问题:
@RepeatedTest(10)
public void testMyCode() {
//your test code goes here
}
请注意,不应与@RepeatedTest
一起使用@Test
注释。
发布于 2009-09-29 15:01:03
要做到这一点,最简单的方法(因为需要最少的新代码)是将测试作为参数化测试运行(使用@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");
}
}
有了上面的内容,甚至可以使用无参数构造函数来实现,但我不确定框架作者是否有意这样做,或者这是否会在未来崩溃。
如果您正在实现自己的runner,那么您可以让runner运行测试10次。如果您使用的是第三方运行器,那么在4.7中,您可以使用新的@Rule
注释并实现MethodRule
接口,以便它接受语句并在for循环中执行10次。这种方法目前的缺点是@Before
和@After
只运行一次。这可能会在下一个版本的JUnit中发生变化( @Before
将在@Rule
之后运行),但无论如何,您将在对象的同一实例上操作( Parameterized
运行器不是这样)。这假设无论您使用哪个运行器来运行类,都可以正确识别@Rule
注释。只有当它委托给JUnit运行者时才会出现这种情况。
如果您使用不识别@Rule
注释的自定义运行器运行,那么您必须编写自己的运行器来适当地委托该运行器,并将其运行10次。
请注意,还有其他可能解决此问题的方法(例如理论跑步者),但它们都需要跑步者。不幸的是,JUnit目前不支持runners层。这是一个链接其他跑步者的跑步者。
发布于 2017-09-14 04:34:11
使用IntelliJ,您可以在测试配置中执行此操作。打开此窗口后,您可以选择运行测试所需的任意次数。
当您运行测试时,intellij将按照您指定的次数执行您选择的所有测试。
运行624个测试10次的示例:
https://stackoverflow.com/questions/1492856
复制相似问题