Я бы обычно использовал @Ignore("comment on why it is ignored")
. ИМО, комментарий очень важен для других разработчиков, чтобы знать, почему тест отключен или на какой срок (может быть, это временно).
EDIT:
По умолчанию есть только информация типа 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
требуется пользовательский Runner
, который регистрирует PrintIgnoreRunListener
:
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>