首页 > 解决方案 > 在 java 中运行所有测试类之前,只需设置一次系统属性和静态属性

问题描述

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

我想在基类中定义一个可以由所有测试类共享的成员(因此必须将其设为静态)。此类成员需要在初始化之前设置一些系统属性。

有没有说在所有测试(在所有测试类组合中)之前设置这些系统属性一次,然后设置静态成员?

我不想使用 junit 套件,因为我以后可能会添加更多测试类,这将导致每次都对套件进行更改,从而导致额外的依赖。

标签: javajunitsystem-properties

解决方案


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

推荐阅读