@BeforeClass все еще выполняет метод каждый раз, когда выполняется любой тест - PullRequest
2 голосов
/ 05 октября 2010

Я использую аннотацию @BeforeClass, чтобы гарантировать, что набор действий выполняется только один раз в наборе из 5-6 тестов.Существует иерархия из 3 файлов Java.

File1 расширяет TestCase

File2 расширяет File 1 (это где я должен поместить аннотацию до класса в методе setUp)

Файл3 расширяет Файл2 (Файл 3 содержит тесты .. Количество 5, но я хочу, чтобы настройка в файле 2 была запущена только один раз)

Прямо сейчас, метод setUpв файле 2 вызывается перед каждым тестом в файле 3.даже после размещения аннотации @BeforeClass.Что я могу сделать, чтобы убедиться, что эта установка запускается только один раз для всех тестов в файле 3

Ответы [ 2 ]

2 голосов
/ 05 октября 2010

Я подозреваю, что вы используете JUnit 3 TestRunner, который игнорирует аннотации и использует только соглашения об именах (где setUp() обычно запускается перед каждым тестом). Попробуйте использовать метод с аннотацией @Test, но не начинать с «test» - если он не запущен, вы используете JUnit 3 TestRunner.

Итак, чтобы исправить это, используйте JUnit 4 TestRunner для запуска набора тестов.

2 голосов
/ 05 октября 2010

Поскольку вы расширяете класс TestCase, метод setUp вызывается перед началом каждого теста. Начиная с junit 4, вам не нужно расширять класс TestCase. Просто попробуйте удалить его, и оно должно работать. Вам также необходимо добавить аннотацию @Test для метода тестирования

...