我有一个常规的参数化测试类,使用 JUnit 4.12 完成(也测试了 4.13.1)。
@RunWith(Parameterized.class)
public class MyTest {
@Test
public void myTest() ...
@Parameters
public static Collection<Object[]> data() { ...}
public MyTest(...)
在应用程序中,有一个我无法修复的设计问题(我的意思是现在不能解决,因为影响太大)。其他类中有一些静态属性,例如
public class StaticClass {
public static Map<String, String> staticMap = new HashMap<>();
MyTest.data()
向其中添加一些数据staticMap
(这很糟糕,但我别无选择)。但是其他一些测试也使用这个属性,他们添加数据然后清理它。
我注意到在调试模式下,当我运行测试(至少来自 intellij)时,它:
- 一开始就调用
MyTest.data()
(这很奇怪):数据被添加到staticMap
, - 它运行一堆测试,将使用和清理
staticMap
- 当它运行 MyTest 时,必要的数据已被清除。
它看起来像一个奇怪的行为,我希望 @Parameters 方法在测试类启动时被执行。
我还使用JUnitParamsRunner
(使用提供程序方法和提供程序类)进行了测试,并且我有相同的行为。
有没有办法绕过这种行为?