Java jUnit: код Набора тестов для выполнения перед любыми тестовыми классами

У меня есть класс набора тестов:

@RunWith(Suite.class)
@Suite.SuiteClasses({
    GameMasterTest.class,
    PlayerTest.class,
})
public class BananaTestSuite { 

Какую аннотацию я должен использовать для создания функции в этом классе выполненной перед каким-либо из классов, содержащих фактические тесты? Прямо сейчас я делаю это, и это работает, но это не столь читаемо, как это могло быть:

static {
    try {
        submitPeelAction = new Player(new GameMaster(1)).getClass().getDeclaredMethod("submitPeelAction");
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    }
    submitPeelAction.setAccessible(true);
}

Я попробовал @BeforeClass но это не работало.

20
задан Nick Heiner 27 December 2009 в 23:02
поделиться

3 ответа

Используйте @Before для setUp() и @After для методов blindDown.

EDIT: после некоторых тестов здесь я обнаружил, что @Before и @After не работает для Test Suite. В вашем случае для инкапсуляции кода инициализации следует использовать @BeforeClass и статический метод.

@RunWith(Suite.class)
@SuiteClasses( { ContactTest.class })
public class AllTests {

    @BeforeClass
    public static void init() {
        System.out.println("Before all");
    }

}
8
ответ дан 30 November 2019 в 00:05
поделиться

Прежде всего: если у вас последний JUnit, т.е. 4.7 или выше, вы также можете сделать это с помощью Правил. Для начала смотрите http://www.infoq.com/news/2009/07/junit-4.7-rules.

Насколько я понимаю, статический блок в классе Suite - хорошее решение.

Недостатком является то, что он будет вызываться только , когда вы прогоняете весь масть, а не отдельные тесты или тестовые классы. Таким образом, альтернативой будет вызов того же самого статического метода в suite-классе из методов @BeforeClass в всех ваших классах.

.
3
ответ дан 30 November 2019 в 00:05
поделиться

Annotate a method with @BeforeClass to make it run before all tests run in this class. Аннотируйте метод с помощью @BeforeClass, чтобы он работал до @BeforeClass каждого теста в данном классе.

re. Ваши комментарии, @BeforeClass работает нормально. Вы выбрасываете исключение в этом методе ?

.
2
ответ дан 30 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: