问答 百科手机端

在没有显式TestSuite的情况下,不要在Maven和每个IDE(Eclipse,IntelliJ等)中默认运行缓慢的JUnit测试类别。

2023-05-02 17:19

这个 :

import static org.junit.Assume.assumeTrue;

@Test
public void mySlowtest() {
    assumeTrue("true".equals(System.getProperty("runSlowTests")));
    ...
}

无论如何要运行它们,只需添加VM参数-DrunSlowTests=true

从语义上讲,这是完全错误的。但这有效:)

我有一组非常缓慢的测试,需要一周才能运行。(他们实际上会连续运行一些代码约一周)。

自然,没有开发人员(甚至是默认的构建作业)都不想运行这些测试。只有特定的,单独的构建作业才有时间运行它们。因此 ,默认情况下需要禁用这些测试

JUnit的类别对此似乎很完美:我用注释了那些缓慢的测试@Category(SlowTests.class)。问题在于它们仍在运行,因为:

  • 我不想维护TestSuite类,因为我们每天都添加Tests。我有0个TestSuite类:Maven,IntelliJ和Eclipse仅运行模块中的所有Test类。包括所有那些缓慢的测试。
  • 即使我们拥有TestSuite类,大多数开源贡献者仍会尝试从IntelliJ或Eclipse运行所有Test类,认为它们挂起并放弃正在运行的测试。默认情况下,这些慢速测试需要排除。最好在IntelliJ或Eclipse中无需任何额外配置。

如何在不使用显式TestSuite的情况下默认排除慢速JUnit测试类别?

热门