首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一遍又一遍运行同一个junit测试的简单方法?

一遍又一遍运行同一个junit测试的简单方法?
EN

Stack Overflow用户
提问于 2009-09-29 14:20:10
回答 9查看 123.2K关注 0票数 147

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

例如,连续运行相同的测试10次,然后报告结果。

我们已经有了一种复杂的方法来做这件事,但我正在寻找一种简单的方法,这样我就可以在某种程度上确定我一直试图修复的不稳定的测试是可以修复的。

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2017-07-26 16:37:51

在JUnit 5中,我可以使用@RepeatedTest注释来解决这个问题:

代码语言:javascript
复制
@RepeatedTest(10)
public void testMyCode() {
    //your test code goes here
}

请注意,不应与@RepeatedTest一起使用@Test注释。

票数 53
EN

Stack Overflow用户

发布于 2009-09-29 15:01:03

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

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

下面是一个示例:

代码语言:javascript
复制
@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层。这是一个链接其他跑步者的跑步者。

票数 134
EN

Stack Overflow用户

发布于 2017-09-14 04:34:11

使用IntelliJ,您可以在测试配置中执行此操作。打开此窗口后,您可以选择运行测试所需的任意次数。

当您运行测试时,intellij将按照您指定的次数执行您选择的所有测试。

运行624个测试10次的示例:

票数 117
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1492856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档