运行以下 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/