0

我有一个常规的参数化测试类,使用 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(使用提供程序方法和提供程序类)进行了测试,并且我有相同的行为。

有没有办法绕过这种行为?

4

0 回答 0