Можно ли игнорировать некоторые модульные тесты?
В настоящее время я работаю над проектом, который широко использует JUnit4 во всех модулях. Мы используем Maven2 для создания проекта и Hudson для непрерывной интеграции. Проект построен и выполняется под Java 1.5.
Недавно мы добавили довольно большой плот модульных тестов, которые понадобятся время от времени, но не хотят запускаться во время процесса сборки (но другие модульные тесты в том же проекте).
Я хочу знать, есть ли какая-то аннотация, которая может быть применена к тестам, или какая-то конфигурация, которую можно сделать для Maven, которая будет игнорировать модульные тесты, которые живут под определенным пакетом или в определенном классе тестирования во время сборки
Возможно, альтернатива просто поставить эти конкретные тесты в нормальный класс, который будет выполняться через main, но это не идеально.
Спасибо за ваши предложения
Ответы
Ответ 1
Вы можете настроить maven-surefire-plugin.
Например:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<excludes>
<exclude>**/TestCircle.java</exclude>
<exclude>**/TestSquare.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
EDIT:
Другим решением является определение profiles, в котором будет выполняться все тесты, например. Хадсон. В режиме разработки вы можете использовать подмножество всего теста для ускорения разработки (или все тесты могут быть в профиле по умолчанию, выбрать тест в профиле dev, так что вам нужно запустить maven с атрибутом -PprofileName
). Этот пример лучше подходит для тестов интеграции, в которых запускается loger.
Ответ 2
Существует аннотация "Игнорировать", но ее ручная работа заключается в том, чтобы добавить их, не уверен, что это помогает.
Его можно использовать для метода тестирования или для всего класса
@Ignore("not ready yet") @Test public void testSomething() {...
или
@Ignore public class SomeTest {
@Test public void testSomething() {...
}
[]]
Ответ 3
Попробуйте JUnit Предположения, которые, кажется, начиная с 4.4
Предполагая, что вы можете обнаружить во время выполнения, если тесты должны быть запущены (через define, properties и т.д.), это позволит вам сохранить хороший чистый набор тестов.
Ответ 4
Я никогда не пробовал, но могли ли вы поместить дополнительные тесты в другую исходную папку и настроить свою конструкцию script для включения или исключения ее в соответствии с вашей целью сборки?
Ответ 5
'Исключить' верный плагин настройки
Ответ 6
Плагин Maven Surefire: Включения и исключения тестов
Ответ 7
JUnit 4.7 Я считаю, что поддерживает "Правила" для такого рода вещей (до 4.7 Я думаю, вы могли бы использовать пользовательские Runners, которые будут проверять переменную окружения).
Или вы можете посмотреть, что включает/исключает теги вашей системы сборки.
Ответ 8
Вам нужно добавить следующее в свой POM.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
Проверьте этот URL:
http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html
- Абхиджит Дас