我有一个用于许多测试的基类,这些测试有一些他们都需要的辅助方法。
它本身没有任何测试,但 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 报告格式化程序有一天会包括忽略的计数(和原因)以及通过、失败和错误。
为 JUnit 4 创建类abstract
应该足够了。如果它不起作用,请仔细检查您使用的 JUnit 版本。
这也传达了您的意图,即这只是测试的一部分。
它还可以防止 JUnit 将类中的测试计为“忽略”(因此忽略测试的最终计数将是您所期望的)。
或者,重命名该类。大多数运行器使用类名来确定哪些类是测试,哪些是助手。在具有默认设置的 Maven 中,您只需确保基类不Test
以TestCase
( http://maven.apache.org/surefire/maven-surefire-plugin/examples/包含-排除.html )
有三个选项:
在 JUnit 4 或 5 中足以使基类抽象。如果您使用@Igonre
属性,它将显示为被忽略的测试(并将其添加到测试总数中)。
您可以使用@Ignore
注释。此注释也适用于类。测试@Ignore
注释用于忽略特定测试或测试组以跳过构建失败。
@Ignore("Base class not yet ready")
class MyBaseClassTestCases {...}
您可以更改测试类的名称,使其在测试名称的开头或结尾不包含单词 Test(区分大小写)/或结尾不包含单词TestCase。
@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() { }
添加一个空测试有效。
@Test(expected = Test.None.class)
public void ATest() {}
请注意,不添加它(expected = Test.None.class)
会添加“添加至少一个断言”声纳问题。