我有多个java测试类,它们扩展了一个公共基类。当前,我有两个方法-分别带有@BeforeClass和@AfterClass批注的startUp()和shutDown(),这使这些方法在每个测试类之前和之后运行一次。
我想在基类中定义一个可由所有测试类共享的成员(因此必须使其变为静态)。此类成员需要先设置一些系统属性,然后才能对其进行初始化。
是否有一种说法是在所有测试之前(在所有测试类中)仅设置一次这些系统属性,然后设置静态成员?
我不想使用junit Suites,因为以后可能会添加更多测试类,这将导致每次更改Suite都会导致附加的依赖关系。
答案 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>