我可以申请的时间限制在套件中的所有测试(Can I apply a time limit for a

2019-09-04 01:24发布

是否有一个JUnit的方式来定义的所有该套件中包含测试一个全球性的超时/极限。

好吧,让我来解释这一点了。

我想介绍一个JUnit测试套件成将在每次构建运行的遗留项目的构建系统。 该套件应包括快速运行单元测试,但该项目有混合组在它的测试源文件夹中的集成和单元测试。

那么,我的目标是为引入中央测试套件单元测试,只包含那些能够在一定的时间限制(每个测试单独)中运行的测试。

我想通过引入强制执行该规则@Rule注释如果可能的话。

我也试试这个:

@RunWith(Suite.class)
@SuiteClasses({...})
public class FastTestSuite{
    @Rule Timeout timeout = new Timeout(1);
}

但这似乎并没有这样的伎俩。 我知道一个事实,即有囤地是比1毫秒慢得多的测试,但没有测试的失败。

Answer 1:

您可以使用@ClassRule在您的套房。

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class})
public class SuiteWithTimeout {
    @ClassRule
    public static Timeout timeout = new Timeout(1000);
}

请注意,超时将每类(或每间套房,如果你有嵌套他们)不是每个测试方法。

也看看这个帖子 。



文章来源: Can I apply a time limit for all the tests in the suite