2009-11-02 2 views
1

не в состоянии выполнить тесты с аннотацией @Test, когда мой тест расширяет TestCase (Junit) в Затмениине в состоянии выполнить тесты с аннотацией @Test, когда мой тест расширяет TestCase (Junit) в Затмении

Он отлично работает, когда я я не расширяюсь от TestCase (jUnit), но мой существующий код распространяется от TestCase, поэтому я хотел бы сохранить это как есть.

ответ

4

Убедитесь, что вы не используете бегун JUnit3.

Откройте «Запустить конфигурацию» для тестирования и на вкладке Test убедитесь, что у вас есть JUnit 4, выбранный для вашего тестового бегуна.

IMHO, если вы переоснащаете свой тестовый комплект для JUnit4, просто отпустите поддержку JUnit3.

BTW, если вы перейдете на «JUnit 4», он все равно выполнит старые классы JUnit3 (вам не нужно добавлять к ним аннотации @Test).

2

Испытания, которые распространяются на junit.framework.TestCase, считаются JUnit3-образными тестами с помощью бегуна JUnit4. См. the source code для AllDefaultPossibilitiesBuilder для более подробной информации.

Вы можете заставить JUnit4 рассматривать классы, которые расширяют TestCase как тесты стиля JUnit4, аннотируя классы @RunWith(JUnit4.class), но вы почти наверняка не хотите этого делать. Если вы это сделаете, ваши тестовые классы все равно наследуют все методы от junit.framework.TestCase, но эти методы не будут вызываться. Другими словами, вы бы наследовали много рывков.

Наследование часто является плохим способом совместного использования кода даже в тестах. Если можно поместить общий код в другой класс и делегировать непосредственно из тестовых классов, сделайте это.

Если вы используете JUnit 4.7 или новее, Rules предлагает другой способ совместного использования кода. На правила может повлиять или повлиять на поведение теста.

В очень редких случаях общий код, необходимый нескольким тестовым классам JUnit4, может использоваться совместно с Runner, но поскольку тестовый класс может указывать только один бегун, у бегунов есть те же самые недостатки, что и базовые классы.

4

Испытания, которые распространяются junit.framework. TestCase считается JUnit3-стильным тестом JUnit4. Это верно.

К аннотации @Test вам необходимо NOT удлинить junit.framework. Тестирование TestCase и @Test отлично работает

Смежные вопросы