我有一个基类用于多个测试,里面包含一些所有测试都需要的帮助方法。
这个基类本身没有任何测试,但是 JUnit(在 eclipse 中)正在调用测试运行器并抱怨没有要测试的方法。
我该如何让它忽略这个类?
我知道我可以添加一个 dummyTest
方法来解决这个问题,但这也会出现在所有子类中。
有建议吗?
我有一个基类用于多个测试,里面包含一些所有测试都需要的帮助方法。
这个基类本身没有任何测试,但是 JUnit(在 eclipse 中)正在调用测试运行器并抱怨没有要测试的方法。
我该如何让它忽略这个类?
我知道我可以添加一个 dummyTest
方法来解决这个问题,但这也会出现在所有子类中。
有建议吗?
使用@Ignore
注解。它也可以用于类。
看这个例子:
@Ignore public class IgnoreMe {
@Test public void test1() { ... }
@Test public void test2() { ... }
}
此外,您可以使用@Ignore注解一个包含测试方法的类,这样将不会执行其中的任何测试。
作为一条注释,我总是建议给出忽略的原因:
@Ignore("This test will prove bug #123 is fixed, once someone fixes it")
我希望运行来自ant的测试时,junit xml报告格式化程序将有一天包括忽略的计数(和原因),以及通过、失败和错误。
abstract
应该足以适用于JUnit 4。如果不起作用,请仔细检查您使用的JUnit版本。Test
开头或结尾,并且不以TestCase
结尾。(http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html)@Ignore
。仅使用抽象类就足够了(在我看来也是最好的选择)。 - techflyabstract
就足够了。 - Aaron Digulla@Ignore
并且不使用abstract
,当我使用mvn package
命令行构建时,我的最终报告中出现了不必要的跳过测试。 - PJ_Finnegan@Ignore
未来版本将不再使用。如果您正在使用JUnit5,可以从JUnit Jupiter中使用@Disabled
。
import org.junit.jupiter.api.Disabled;
你甚至可以在注释中使用@Disabled
和@Disabled("这里是一些评论")
用注释标注类,将禁用类中的所有测试:
@Disabled
public class DemoTest { }
@Disabled("some comment here")
public class DemoTest { }
@Disabled
public void whenCaseThenResult() { }
@Disabled("some comment here")
public void whenCaseThenResult() { }
有三种选项:
在JUnit 4或5中,将基类设置为抽象的就足够了。如果使用@Ignore
属性,则它将显示为已忽略的测试(并将其添加到测试总数中)。
您可以使用@Ignore
注释。该注释也适用于类。
@Ignore
测试注释用于忽略特定的测试或一组测试,以跳过构建失败。
@Ignore("Base class not yet ready")
class MyBaseClassTestCases {...}
您可以更改测试类的名称,以便在测试名称的开头或结尾没有单词Test (区分大小写)/或者单词TestCase在结尾处。
添加一个空的测试是有效的。
@Test(expected = Test.None.class)
public void ATest() {}
注意,如果不加上 (expected = Test.None.class)
,会导致 Sonar 报错 "至少添加一个断言"。