在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);
}
注意,超时将是每个类(或每个套件,如果您嵌套了它们),而不是每个测试方法。
也可以看看这篇文章