Что может заставить 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 ответов


  1. убедитесь, что вы импортируете право @Ignore. Обязательно используйте @org.junit.Ignore явно.

  2. дважды проверьте, выполняется ли ваш тест 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).

Ilustration способов исполнения


Я думаю, что его просто @Ignore, который пропустит тест

JUnit В Игнор