Игнорировать тест JUnit - PullRequest
       8

Игнорировать тест JUnit

5 голосов
/ 04 октября 2011

У меня есть тест, и я хочу, чтобы он не запускался. Какая хорошая практика: установить Ignore внутри теста?@Deprecated?

Я хотел бы не запускать его, но с сообщением о том, что я должен внести изменения в будущем, чтобы запустить его.

Ответы [ 2 ]

12 голосов
/ 04 октября 2011

Я бы обычно использовал @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>
0 голосов
/ 03 декабря 2011

Если вы используете набор тестов, вы можете редактировать все тестовые случаи в одном месте.например:

@RunWith(Suite.class)
@Suite.SuiteClasses({
WorkItemTOAssemblerTestOOC.class,
WorkItemTypeTOAssemblerTestOOC.class,
WorkRequestTOAssemblerTestOOC.class,
WorkRequestTypeTOAssemblerTestOOC.class,
WorkQueueTOAssemblerTestOOC.class
})
public class WorkFlowAssemblerTestSuite {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...