Краткая предыстория: я уже несколько дней ищу проблему с запуском тестов Maven / Surefire и сузил ее до небольшого числа подозреваемых в тестах. Поведение, которое я вижу, безумное. Я начинаю с mvn clean test
: выполнено 250 тестов, 0 пропущено. Теперь я перемещаю подозрительный тест в src/test/java
и пробую снова: 146 тестов выполнено, 0 пропущено! Вывод Maven не дает никакого намека на то, что другие тесты не выполняются, даже с флагом -X
.
Это подводит меня к моему вопросу: причина, по которой я называю тест «подозрительным», заключается в том, что весь класс украшен @Ignore, поэтому я полагаю, что включение его в мои тестовые источники не должно иметь никакого эффекта при все. Затем мне пришло в голову: у этих классов есть методы @BeforeClass/@AfterClass, которые управлять фиктивным сервером Zookeeper. Раньше это приводило к шаткому поведению, поэтому у нас есть тесты @Ignored.
Если JUnit запускает код до/после, но игнорирует тесты, я понятия не имею, что может произойти (но, вероятно, это будет очень плохо). Это происходит? Это должно произойти? Если да, то как я должен сказать "для справки, вот тест, который должен работать, но нуждается в исправлении", когда он включает @BeforeClass / @AfterClass? Также представляет существенный интерес: что, черт возьми, это делает с Surefire/Maven, что это заставляет несвязанные тесты упасть с лица Земли?
mvn clean test
не работает@BeforeClass
в классе@Ignore
. СчетчикSkipped
увеличивается только на единицу независимо от количества методов @Test в классе @Ignore. (Maven 2.2.1, jUnit 4.9) Вы должны приложить некоторый код и номера версий. Используете ли вы пользовательский тест-раннер? - person palacsint   schedule 24.09.2011