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 работает как рекламируется.