微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Junit:@Parameters 方法在任何其他测试之前运行

如何解决Junit:@Parameters 方法在任何其他测试之前运行

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

有什么办法可以绕过这种行为吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。