当前位置: 首页 > 面试题库 >

如何在JUnit 4中运行属于某个类别的所有测试

宰父劲
2023-03-14
问题内容

JUnit 4.8包含一个很好的新功能,称为“类别”,使您可以将某些类型的测试组合在一起。这非常有用,例如为慢速和快速测试分别进行测试。我知道JUnit
4.8发行说明中
提到的内容,但想知道我如何才能实际运行带有特定类别注释的所有测试。

JUnit 4.8发行说明显示了一个示例套件定义,其中SuiteClasses批注从特定类别中选择要运行的测试,如下所示:

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
  // Will run A.b and B.c, but not A.a
}

有谁知道我可以如何在SlowTests类别中运行所有测试?看来您必须具有SuiteClasses批注…


问题答案:

我发现了实现我想要的目标的一种可能方法,但是我不认为这是最好的解决方案,因为它依赖于JPath之外的ClassPathSuite库。

我为慢速测试定义了测试套件,如下所示:

@RunWith(Categories.class)
@Categories.IncludeCategory(SlowTests.class)
@Suite.SuiteClasses( { AllTests.class })
public class SlowTestSuite {
}

AllTests类的定义如下:

@RunWith(ClasspathSuite.class)
public class AllTests {
}

我不得不在这里使用ClassPathSuite项目中的ClassPathSuite类。它将找到所有带有测试的类。



 类似资料:
  • 我打算用@Category注释来注释我的一些JUnit4测试。然后,我想将这类测试排除在我的Maven版本上运行。 我从Maven文档中看到,可以指定要运行的测试类别。我想知道如何指定一类不运行的测试。 谢谢

  • 我几乎只在我不想作为测试套件的一部分运行的非单元测试中使用JUnit类别。在NUnit中,我可以使用显式,但我在JUnit中发现的唯一可比的是类别。在gradle中,排除类别很简单,但我不知道如何使用IntelliJ的测试运行程序来做到这一点。我知道如何运行属于类别的测试,但不知道如何排除它们。

  • 在我的AWS账户上,我几乎没有VPC。我正在试图找到一种方法来列出位于某个专有网络下的所有资源。 谢谢

  • 问题内容: 在JUnit4中可以吗? 在JUnit3中,我将执行以下操作: 问题答案: takari-cpsuite(最初由Johannes Link 开发)提供了一个适合您需求的classpath- suite。它允许通过正则表达式对Classpath中的类进行过滤,例如:

  • 对于测试证据,我想将我写到特定目录中的所有测试工件(例如服务器调用和响应)存档。我得到了压缩目录的方法,但我没有找到合适的地方来执行它。 测试生命周期回调似乎不是正确的位置,因为@AfterAll在每个测试类之后被调用,但是存档应该在所有测试类中的所有测试终止后生成。 在阅读了诸如如何在模块中执行之前和之后分别编码一次的帖子之后?似乎没有希望在jUnit中执行调用。 我找到了一个扩展TestLau