java - 我可以为套件中的所有测试应用时间限制吗

标签 java junit4 junit-rule

JUnit 中是否有一种方法可以为套件中包含的所有测试定义全局超时/限制。

好吧,让我稍微解释一下。

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

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

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

我试过这个:

@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);
}

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

另请查看 this post .

关于java - 我可以为套件中的所有测试应用时间限制吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16608934/

相关文章:

java - 使用 Spring MVC 绑定(bind)表单对象 CGLIB 的动态表单

java - 注释方法 arg @Nonnull 时 JUnit 测试失败

java - 通过 @Rule 在 JUnit 中初始化一个 List<?>

java - @Rule 声明会导致调试尝试出错

java - 使用 JUnit 4 测试自定义异常的错误代码

java - SharedPreferences 没有更新其值

java - 如何使用自定义对象创建 libgdx 数组的副本?

java - XML字符串解析Document应该有更大的值时却是0

java - 为什么我的 JFrame 没有出现在单元测试中?

java - 如何声明 Interface 类型的变量,然后将实现该 Interface 的 Class 的对象分配给该变量,以及如何测试这一点?