JUnit ожидаемый тег не работает должным образом - PullRequest
32 голосов
/ 20 июля 2009

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

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

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

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

Скриншот: Screenshot

Ответы [ 3 ]

79 голосов
/ 20 июля 2009

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

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

2 голосов
/ 15 июня 2018

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

@ RunWith (JUnit4.class)

2 голосов
/ 20 июля 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...