在单元测试期间重置类静态变量

kan*_*kan 17 java unit-testing legacy-code static-variables

我正在尝试为遗留代码编写单元测试.我正在测试的类有几个静态变量.我的测试用例类有几个@Test方法.因此,他们都拥有相同的状态.

有没有办法在测试之间重置所有静态变量?

我提出的一个解决方案是明确重置每个字段,例如:

field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();
Run Code Online (Sandbox Code Playgroud)

如您所见,每个变量都需要自定义重新初始化.这种方法不容易扩展,遗留代码库中有很多这样的类.有没有办法一次性重置所有内容?也许每次重新上课?

作为一个可能的好解决方案,我认为是使用类似powermock的东西,并为每个测试创建一个单独的类加载器.但我看不到简单的方法.

kan*_*kan 23

好吧,我想我弄明白了.这很简单.

可以将@PrepareForTestpowermock的注释移动到方法级别.在这种情况下,powermock为每个方法创建类加载器.所以我需要它.