java - JUnit 理论将 params 设置为 null

标签 java junit junit4

我有一个使用这样的理论的测试类:

@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/

相关文章:

java - 在 Eclipse 上运行时斯坦福 CoreNlp 错误 "java.lang.OutOfMemoryError: GC overhead limit exceeded"

java - Neo4j - 搜索用户时根据适用性评分

java - 在 Eclipse 中运行 Junit 5 所需的最低 Maven 依赖项是什么?

java - 如何参数化 junit 测试套件

gradle - 无法使用Serenity Framework使用Gradle执行Jbehave

java - 无法在jsp上显示希伯来文字符

java - 仅保留更改的字段

java - Put 方法在 TreeMap 的实现中

java - Spring JUnit .properties 文件不起作用

java - junit4 中未找到测试