[英]Ignore JUnit test
我有一个测试,我希望它不应该被启动什么是好的做法:设置Ignore
内部测试? @Deprecated
?
我想不发布它,但是有一条消息告知我应该做出改变以便将来启动它。
我通常使用@Ignore("comment on why it is ignored")
。 IMO评论对于其他开发人员来说非常重要,因为他们知道测试被禁用的原因或持续时间(也许只是暂时的)。
编辑:
默认情况下,只有Tests run: ... Skipped: 1 ...
的信息Tests run: ... Skipped: 1 ...
用于忽略测试。 如何打印Ignore
注释的值?
一种解决方案是创建自定义RunListener
:
public class PrintIgnoreRunListener extends RunListener {
@Override
public void testIgnored(Description description) throws Exception {
super.testIgnored(description);
Ignore ignore = description.getAnnotation(Ignore.class);
String ignoreMessage = String.format(
"@Ignore test method '%s()': '%s'",
description.getMethodName(), ignore.value());
System.out.println(ignoreMessage);
}
}
不幸的是,对于正常的JUnit测试,要使用自定义RunListener
需要有一个注册PrintIgnoreRunListener
的自定义Runner
:
public class MyJUnit4Runner extends BlockJUnit4ClassRunner {
public MyJUnit4Runner(Class<?> clazz) throws InitializationError {
super(clazz);
}
@Override
public void run(RunNotifier notifier) {
notifier.addListener(new PrintIgnoreRunListener());
super.run(notifier);
}
}
最后一步是注释您的测试类:
@RunWith(MyJUnit4Runner.class)
public class MyTestClass {
// ...
}
如果您使用的是maven和surefire插件,则不需要客户Runner
,因为您可以配置surefire以使用自定义侦听器:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.acme.PrintIgnoreRunListener</value>
</property>
</properties>
</configuration>
</plugin>
如果使用测试套件,则可以在一个位置编辑所有测试用例。 例如:
@RunWith(Suite.class)
@Suite.SuiteClasses({
WorkItemTOAssemblerTestOOC.class,
WorkItemTypeTOAssemblerTestOOC.class,
WorkRequestTOAssemblerTestOOC.class,
WorkRequestTypeTOAssemblerTestOOC.class,
WorkQueueTOAssemblerTestOOC.class
})
public class WorkFlowAssemblerTestSuite {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.