我可以为套件中的所有测试申请一个时间限制吗?



在JUnit中是否有办法为套件中包含的所有测试定义一个全局超时/限制?

好吧,让我来解释一下。

我想在遗留项目的构建系统中引入一个单元测试套件,它将在每次构建中运行。套件应该由快速运行的单元测试组成,但是项目在其测试源文件夹中混合了集成测试集和单元测试集。

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

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

I did try this:

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

,但这似乎不起作用。我知道有些测试的速度比1毫秒慢得多,但没有一个测试失败。

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

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

注意,超时将是每个类(或每个套件,如果您嵌套了它们),而不是每个测试方法。

也可以看看这篇文章

相关内容

  • 没有找到相关文章

最新更新