67

我有一个用于许多测试的基类,这些测试有一些他们都需要的辅助方法。

它本身没有任何测试,但 JUnit(在 eclipse 中)正在调用它的测试运行器并抱怨没有测试方法。

我怎样才能让它忽略这个类?

我知道我可以添加一个dummyTest可以解决问题的方法,但它也会出现在所有子类中。

建议?

4

6 回答 6

100

用于@Ignore注释。它也适用于类。看到这个:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }

此外,您可以使用 @Ignore 注释包含测试方法的类,并且不会执行任何包含测试。

来源:JUnit JavaDoc

于 2009-01-20T15:12:12.553 回答
32

正如一个注释,我总是建议给出忽略的理由:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

我希望在从 ant 运行测试时使用的 junit xml 报告格式化程序有一天会包括忽略的计数(和原因)以及通过、失败和错误。

于 2009-01-29T13:05:39.903 回答
23

为 JUnit 4 创建类abstract应该足够了。如果它不起作用,请仔细检查您使用的 JUnit 版本。

这也传达了您的意图,即这只是测试的一部分。

它还可以防止 JUnit 将类中的测试计为“忽略”(因此忽略测试的最终计数将是您所期望的)。

或者,重命名该类。大多数运行器使用类名来确定哪些类是测试,哪些是助手。在具有默认设置的 Maven 中,您只需确保基类不TestTestCase( http://maven.apache.org/surefire/maven-surefire-plugin/examples/包含-排除.html )

于 2013-03-26T15:27:40.743 回答
10

有三个选项:

  1. 在 JUnit 4 或 5 中足以使基类抽象。如果您使用@Igonre属性,它将显示为被忽略的测试(并将其添加到测试总数中)。

  2. 您可以使用@Ignore注释。此注释也适用于类。测试@Ignore注释用于忽略特定测试或测试组以跳过构建失败。

    @Ignore("Base class not yet ready") 
    class MyBaseClassTestCases {...}
    
  3. 您可以更改测试类的名称,使其在测试名称的开头或结尾不包含单词 Test(区分大小写)/或结尾不包含单词TestCase

于 2017-12-26T14:14:13.213 回答
9

JUnit5

@Ignore在未来的版本中不退出,如果你使用的是 JUnit5,你可以@Disabled从 JUnit Jupiter使用

import org.junit.jupiter.api.Disabled;

您甚至可以@Disabled与评论一起使用@Disabled("some comment here")

班级

注释类,将禁用类中的所有测试:

@Disabled
public class DemoTest { }

@Disabled("some comment here")
public class DemoTest { }

方法

@Disabled
public void whenCaseThenResult() { }

@Disabled("some comment here")
public void whenCaseThenResult() { }
于 2020-01-10T09:59:59.223 回答
1

添加一个空测试有效。

@Test(expected = Test.None.class)
public void ATest() {}

请注意,不添加它(expected = Test.None.class)会添加“添加至少一个断言”声纳问题。

于 2022-02-18T20:13:49.883 回答