Разрушение класса в Junit 3? - PullRequest
9 голосов
/ 30 октября 2009

У нас есть много интеграционных тестов, написанных с использованием JUnit 3 , хотя сейчас мы запускаем их с 4.4 . Некоторые из них нуждаются в методе tearDown, который запускается после завершения всех тестов в классе (чтобы освободить некоторые общие ресурсы).

Я вижу, что это можно сделать в junit 4 с помощью @AfterClass (org.junit). Однако смешивание этого с существующими тестами junit 3, которые расширяют TestCase (junit.framework. *), Похоже, не работает. [Кстати, есть ли еще инструмент миграции? Вопрос 264680 указывает на то, что не было ни одного года назад.]

Я видел упоминание об использовании junit.extensions.TestSetup для такого рода вещей. Мое краткое тестирование этого не показалось работой. Есть примеры?

Ответы [ 2 ]

18 голосов
/ 30 октября 2009

Нашел ответ на свой вопрос :) Я пробовал это коротко, прежде чем опубликовать свой вопрос, но он не работал для меня. Но теперь я понимаю, что это потому, что наш тестовый фреймворк вызывает junit не так, как по умолчанию, поэтому он не вызывал метод "suite", который необходим в следующем решении. В Eclipse, если я использую встроенный бегун junit для непосредственного выполнения одного Test / TestCase, он работает нормально.

Способ выполнить эту настройку / разборку один раз для каждого класса в junit 3 - использовать TestSuite. Вот пример на junit.org:

Есть ли способ заставить setUp () работать только один раз?

public static Test suite() {
    return new TestSetup(new TestSuite(YourTestClass.class)) {

        protected void setUp() throws Exception {
            System.out.println(" Global setUp ");
        }
        protected void tearDown() throws Exception {
            System.out.println(" Global tearDown ");
        }
    };
}
2 голосов
/ 30 октября 2009

В JUnit 4 ваш тестовый класс не должен расширяться TestCase. Вместо этого вы должны убедиться, что имя вашего тестового класса соответствует *Test, и каждый метод теста помечен @Test. Вы пытались внести эти изменения, а затем добавить аннотацию @AfterClass в соответствующий метод?

Существуют аннотации для замены большинства / всех функций, которые вы в настоящее время используете, с TestCase.

...