Что может заставить JUnit игнорировать аннотации @Ignore?
я просто использовал MyEclipse для автоматического создания некоторых тестов JUnit. Один из сгенерированных методов выглядит следующим образом:
@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
добавил @Ignore
аннотаций вручную. Однако, когда я запускаю тест, JUnit перечисляет этот метод и другие подобные ему в разделе "сбои", а не игнорирует их (связанные:в чем разница между сбоем и ошибкой в JUnit?). И он отображает сообщение " еще не реализовано "вместо сообщения" проигнорировано". Ясно,fail()
должно быть вызывается, и, следовательно,@Ignore
утверждение не работает.
что здесь происходит? Есть ли настройки мне нужно включить, чтобы это работало?
EDIT:
Вещи, которые я рассматривал/пробовал до сих пор:
- я использую JUnit 4, поэтому это не проблема с версией.
- я-импортера
org.junit.Ignore
, так что это не случай неправильногоIgnore
используется. - я пробовал использовать ,
@Ignore @Test
и@Ignore("message") @Test
; все плохо.
EDIT 2:
Я создал тесты с MyEclipse, через New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
, а библиотека в моем пути сборки-JUnit 4. Я строю с ant и фактически веду дело с MyEclipse.
5 ответов
убедитесь, что вы импортируете право
@Ignore
. Обязательно используйте@org.junit.Ignore
явно.дважды проверьте, выполняется ли ваш тест JUnit 4, а не 3. Самый простой способ сделать это-либо изменить имя теста, чтобы оно не было префиксом
test
(теперь он вообще не должен выполняться, и JUnit 4 в любом случае не нуждается в этом префиксе) или проверьте иерархию наследования тестового набора: it не стоит продлить прямо или косвенноjunit.framework.TestCase
(требование Junit 3).
У меня тоже была эта проблема, хотя JUnit 3 не был на моем пути к классам. Я считаю, что режим совместимости на Junit 4 подбирает префикс "test" в вашем testname и, таким образом, работает как JUnit 3, а не поднимает @Ignore. Решение заключается в переименовании теста.
вы уверены, что тестовые классы были перекомпилированы?
Это довольно распространенная проблема, что перекомпиляция терпит неудачу, потому что где-то в источниках была опечатка (например, отсутствующая точка с запятой), и IDE не говорит вам, что компиляция не удалась.
Попробуйте удалить .
в моем случае я обнаружил, что моя IDE выполняла тест, игнорируя @Ignore
Примечание. Когда я бежал mvn install
(или любая другая фаза maven) тест был пропущен, и это то, к чему я на самом деле стремился (см. прилагаемую ilustration).