Подтвердить что ты не робот

Что может заставить JUnit игнорировать аннотации @Ignore?

Я просто использовал MyEclipse для автоматического создания некоторых тестовых примеров JUnit. Один из сгенерированных методов выглядит следующим образом:

@Ignore("Ignored") @Test
public void testCreateRevision()
{
    fail("Not yet implemented"); // TODO
}

Я добавил аннотацию @Ignore вручную. Однако, когда я запускаю тест, JUnit перечисляет этот метод и другие подобные ему в "отказах" вместо того, чтобы игнорировать их (связанный: В чем разница между ошибкой и ошибкой в ​​JUnit?). И вместо сообщения "Игнорируется" отображается сообщение "Пока не реализовано". Ясно, что fail() должно быть вызвано, и поэтому утверждение @Ignore не работает.

Что здесь происходит? Есть ли параметр, который мне нужно включить для этого?

РЕДАКТИРОВАТЬ:
Вещи, которые я рассмотрел/пытался до сих пор:

  • Я использую JUnit 4, поэтому это не проблема с версией.
  • Я импортирую org.junit.Ignore, поэтому это не случай неправильного использования Ignore.
  • Я пробовал использовать только @Ignore, @Ignore @Test и @Ignore("message") @Test; все сбой.

РЕДАКТИРОВАТЬ 2:
Я создал тесты с помощью MyEclipse через New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test, а библиотека в моем пути сборки - JUnit 4. Я создаю с помощью ant и фактически запускаю случай с MyEclipse.

4b9b3361

Ответ 1

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

  • Двойная проверка, выполняется ли ваш тест JUnit 4, а не 3. Самый простой способ сделать это - либо изменить имя теста, чтобы он не был префикс test (теперь это не должно быть и JUnit 4 в любом случае не нуждается в этом префиксе) или проверьте иерархию наследования тестового примера: не должен распространяться прямо или косвенно из junit.framework.TestCase (требование Junit 3).

Ответ 2

У меня была эта проблема, хотя JUnit 3 не был в моем классе. Я считаю, что режим совместимости на Junit 4 подбирает префикс "test" в вашем тестовом названии и, таким образом, работает как JUnit 3, а не собирает @Ignore. Решение состоит в том, чтобы переименовать ваш тест.

Ответ 3

Вы уверены, что тестовые классы были перекомпилированы?

Это довольно распространенная проблема, из-за которой перекомпиляция терпит неудачу, потому что где-то в источниках (например, с точкой с запятой) была опечатка, а среда IDE не говорит о том, что компиляция завершилась неудачно.

Попробуйте удалить папку target/test-classes.

Ответ 4

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

JUnit Ignore

Ответ 5

В моем случае я обнаружил, что моя IDE выполнила тест, не обращая внимания на аннотацию @Ignore. Когда я запустил mvn install (или любую другую фазу maven), тест был пропущен и был тем, к чему я на самом деле стремился (см. Прилагаемую иллюстрацию).

Иллюстрации способов выполнения