Настройте системные свойства и статику только один раз перед запуском всех тестовых классов в java.

У меня есть несколько тестовых классов Java, которые расширяют общий базовый класс. В настоящее время у меня есть два метода - startUp() и ShutDown() с аннотациями @BeforeClass и @AfterClass соответственно, которые заставляют эти методы запускаться один раз до и после каждого тестового класса.

Я хочу определить член в базовом классе, который может использоваться всеми тестовыми классами (поэтому придется сделать его статическим). Этот член класса требует установки некоторых системных свойств, прежде чем его можно будет инициализировать.

Можно ли установить эти системные свойства только один раз перед всеми тестами (во всех тестовых классах вместе), а затем установить статический член?

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


person ThatNewGirl    schedule 18.08.2018    source источник


Ответы (1)


Вы можете попробовать правила JUnit следующим образом:

@Rule
public final RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();

@BeforeClass
public static void beforeClass() {
    System.setProperty("MY_PROPERTY", "myNewValue");
}   

правило позаботится обо всем остальном и воссоздаст свойство при необходимости, вам просто нужна новая тестовая зависимость:

<dependency>
    <groupId>com.github.stefanbirkner</groupId>
    <artifactId>system-rules</artifactId>
    <version>1.2.0</version>
    <scope>test</scope>
</dependency>
person smoczyna    schedule 13.12.2018