JUnit ожидаемый тег не работает должным образом

У меня есть следующий тестовый пример в Eclipse, использующий JUnit 4, который отказывается проходить. Что может быть не так?

@Test(expected = IllegalArgumentException.class)
public void testIAE() {
    throw new IllegalArgumentException();
}

Этот точный тестовый случай возник, когда попытка протестировать мой собственный код с ожидаемым тегом не сработала. Я хотел посмотреть, пройдет ли JUnit самый базовый тест. Это не так.

Я также проверил с пользовательскими исключениями, как и ожидалось, без удачи.

Снимок экрана: http://www.freeimagehosting.net/uploads/6a995b0db7.png

3 ответа

Решение

Проблема в том, что ваш AnnounceThreadTest расширяет TestCase. Поскольку он расширяет TestCase, JUnit Runner рассматривает его как тест JUnit 3.8, и этот тест выполняется, потому что он начинается со слова test, скрывая тот факт, что аннотация @Test на самом деле вообще не используется.

Чтобы исправить это, удалите "extends TestCase" из определения класса.

Вместо удаления extends TestCase вы можете добавить это для запуска тестового примера с Junit4, который поддерживает аннотации.

@RunWith (JUnit4.class)

Просто запустил это в IntelliJ, используя JUnit 4.4:

   @Test(expected = IllegalArgumentException.class)
   public void testExpected()
   {
       throw new IllegalArgumentException();
   }

Проходит отлично.

Перестройте весь свой проект и попробуйте снова. Есть что-то еще, что ты делаешь неправильно. JUnit 4.4 работает как рекламируется.

Другие вопросы по тегам