java - 为什么 JUnit DataPoints 方法不适用于原语?

标签 java junit

运行以下 MWE 时,测试 testDataPointsMethodFailsForPrimitives 失败并出现 AssertionError:从未找到满足方法假设的参数。违反假设:[] 但在取消注释作为测试类的静态成员创建的数据点时可以正常通过。另一方面,testDataPointsMethodWorksForObjects 可以正常工作。

为什么当通过方法创建时,作为基元的数据点不能被 JUnit 识别,而作为对象的数据点却可以?

import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;

@RunWith(Theories.class)
public class MWE {

//    @DataPoints
//    public static int[] primitiveArray = new int[] {1, 2, 3, 4, 5, 6};

    @DataPoints
    public static int[] primitiveMethod() {
        return new int[] {1, 2, 3, 4, 5, 6};
    }

    @DataPoints
    public static Integer[] objectMethod() {
        return new Integer[] {1, 2, 3, 4, 5, 6};
    }

    @Theory
    public void testDataPointsMethodFailsForPrimitives(int primitive) {
    }

    @Theory
    public void testDataPointsMethodWorksForObjects(Integer primitive) {
    }

}

最佳答案

看起来这在 JUnit 的 4.12 beta 版本中已修复。这是问题的描述及其解决方案:https://github.com/junit-team/junit/issues/637

关于java - 为什么 JUnit DataPoints 方法不适用于原语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178848/

相关文章:

java.lang.UnsatisfiedLinkError : no rxtxSerial in java. 库路径 debian

java - 用于 REST Controller 的 Spring MVC 4,如何为测试用例 Autowiring 不同的依赖项

java - 如何设置 Ant 'junit' 任务的工作目录?

java - 使用 Guice 将字符串注入(inject)类进行 JUnit 测试

java - Servlet 响应错误的动态错误页面

java - 从另一个项目访问一个类

java - 通过 JNI 获取 Java ByteBuffer 的指针

Java : Skip Unicode characters while reading a file

azure - 需要在电子邮件通知中发送发布测试结果图表