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

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

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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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