如何让Junit 4忽略基础测试类?

All*_*nde 53 junit junit4

我有许多测试的基类,它们都有一些帮助方法.

它本身并没有对它进行任何测试,但JUnit(在eclipse中)正在调用它上面的测试运行器并抱怨没有方法可以测试.

怎么能让它忽略这个课?

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

建议?

gue*_*rda 90

用于@Ignore注释.它也适用于课程.看到这个:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }
Run Code Online (Sandbox Code Playgroud)

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

来源:JUnit JavaDoc


mat*_*rns 29

就像一张纸条,我总是建议给出一个忽略的理由:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")
Run Code Online (Sandbox Code Playgroud)

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

  • 几年过去了,但是错误#123尚未修复。) (3认同)

Aar*_*lla 20

使类abstract成为JUnit 4就足够了.如果它不起作用,请仔细检查您正在使用的JUnit版本.

这也传达了你的意图,这只是一个测试的片段.

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

或者,重命名该类.大多数运行程序使用类名来确定哪些类是测试,哪些是帮助程序.在具有默认设置的Maven中,您只需确保基类不以开头或结尾Test而不是以TestCase(http://maven.apache.org/surefire/maven-surefire-plugin/examples/结尾).included-exclusion.html)

  • 对于JUnit 4,“抽象”就足够了。 (3认同)
  • 您不需要`@ Ignore`。抽象就足够了(我认为最好) (2认同)

Tal*_*sar 6

有2个选项:

  1. 您应该创建基本测试类abstract,而Junit4就足够了。如果使用@Igonre属性,它将显示为忽略的测试(并将其添加到测试总数中)。

  2. 您可以更改测试类的名称,使其在测试名称的开头或结尾不带有单词 Test(区分大小写),或者在单词末尾不带有单词TestCase。

顺便说一句:@Igonre用于不同的用例,当您想忽略特定的测试时。


YCF*_*F_L 6

JUnit5

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

import org.junit.jupiter.api.Disabled;
Run Code Online (Sandbox Code Playgroud)

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

班级

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

@Disabled
public class DemoTest { }
Run Code Online (Sandbox Code Playgroud)
@Disabled("some comment here")
public class DemoTest { }
Run Code Online (Sandbox Code Playgroud)

方法

@Disabled
public void whenCaseThenResult() { }
Run Code Online (Sandbox Code Playgroud)
@Disabled("some comment here")
public void whenCaseThenResult() { }
Run Code Online (Sandbox Code Playgroud)