gpt4 book ai didi

java - 为什么在 JUnitParams 方法中设置字段变量后它们为 null?

转载 作者:行者123 更新时间:2023-12-01 16:50:52 25 4
gpt4 key购买 nike

我正在使用 JUnitParamsMockito 编写一个测试类。我想使用 Mockito 模拟 作为参数。在我的测试中,我有大约十个模拟,我只想通过一个模拟来为其定义特殊行为。

我在一个简单的例子中重现了这个问题。

我的问题:我在方法 parametersForTest 中初始化变量 myList,但是当我调试到 test 方法时 myList 为 null,但 param 是我想要的模拟。

@RunWith(JUnitParamsRunner.class)
public class MockitoJUnitParamsTest {

private List myList;

@Test
@Parameters
public void test(List param) {
assertThat(param).isEqualTo(this.myList);
}

public Object[] parametersForTest() {
myList = Mockito.mock(List.class);
return new Object[]{myList};
}
}

我用

  • JUnitParams 版本 1.0.5
  • JUnit 版本 4.12
  • Mockito 版本 1.10.19

为什么 myList 为空以及如何解决这个问题?

最佳答案

运行parametersForTest()方法的MockitoJUnitParamsTest类的实例与运行test()方法不同。这是因为 Junit 将为每个测试方法创建不同的实例。在你的情况下,使 myList 静态

private static List myList;

可以部分解决问题,但如果测试并行运行,可能会失败。

关于java - 为什么在 JUnitParams 方法中设置字段变量后它们为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com