在Java中运行所有测试类之前,只需设置一次系统属性和静态变量

时间:2018-08-18 21:11:58

标签: java junit system-properties

我有多个java测试类,它们扩展了一个公共基类。当前,我有两个方法-分别带有@BeforeClass和@AfterClass批注的startUp()和shutDown(),这使这些方法在每个测试类之前和之后运行一次。

我想在基类中定义一个可由所有测试类共享的成员(因此必须使其变为静态)。此类成员需要先设置一些系统属性,然后才能对其进行初始化。

是否有一种说法是在所有测试之前(在所有测试类中)仅设置一次这些系统属性,然后设置静态成员?

我不想使用junit Suites,因为以后可能会添加更多测试类,这将导致每次更改Suite都会导致附加的依赖关系。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的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>