我有一个使用这样的理论的测试类:
@RunWith(Theories.class)
public class XTest(){
public static X x1;
public static X x2;
@DataPoints("xlist")
public static X[] xList = {x1, x2};
}
@Before
public void setUp() throws Exception {
x1 = new X();
x2 = new X();
}
@Theory
public void test(@FromDataPoints("xlist" x){
// x is null
}
我不明白为什么我的 x
为空。我尝试了同样的参数化测试,但仍然为空。我在这里缺少什么?
最佳答案
代码中的问题来自“init”命令。
xList 是静态;因此,当您的测试类第一次加载时,就会执行初始化代码。此时,两个字段 x1 和 x2 仍为 null - 因为 @Before 方法将稍后运行。
因此,一个简单的解决方法可能是根本不使用@Before,而是使用:
public static X x1 = new X();
相反。
关于java - JUnit 理论将 params 设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908487/