Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JUnitCore运行参数化测试_Java_Junit_Junit Runner - Fatal编程技术网

Java 使用JUnitCore运行参数化测试

Java 使用JUnitCore运行参数化测试,java,junit,junit-runner,Java,Junit,Junit Runner,是否可以使用JUnitCoreAPI运行参数化测试类 我有一个名为Fibonacci的测试类,一个名为TestFibonacci的参数化测试类,以及一个使用JUnitCoreAPI执行TestFibonacci类的简单Java类(JUnitParameterized)。如果我使用JUnit插件或命令行执行TestFibonacci,它就会通过。然而,当我用我的JUnitParameterized类执行它时,它失败了 正在测试的类 public class Fibonacci { publi

是否可以使用JUnitCoreAPI运行参数化测试类

我有一个名为Fibonacci的测试类,一个名为TestFibonacci的参数化测试类,以及一个使用JUnitCoreAPI执行TestFibonacci类的简单Java类(JUnitParameterized)。如果我使用JUnit插件或命令行执行TestFibonacci,它就会通过。然而,当我用我的JUnitParameterized类执行它时,它失败了

正在测试的类

public class Fibonacci {

  public static int compute(int n) {
    if (n <= 1) {
      return n;
    }
    return compute(n-1) + compute(n-2);
  }
}
公共类Fibonacci{
公共静态整数计算(整数n){

如果(n当JUnit测试类用
@Parameterized
注释时,作为描述的测试方法名称将用大括号、冒号和在
@Parameters
注释中提供的替换的
名称
中的数字来充实

在您的情况下,要执行单个测试,即设置一个参数,您需要

Result result = (new JUnitCore()).run(Request.method(TestFibonacci.class, "test[6: fib(6)=8]"));
在这种情况下,将提供第6个参数集(从零开始)。
请注意,您必须将您在方法名称中提供的数字与您声明为参数的数字完全匹配。序列号也很重要。因此,以下内容不起作用:

 "test[3: fib(6)=8]" (wrong sequence .. <6, 8> pair is 6th, not 3rd)
 "test[6: fib(50)=100]" (the pair <50, 100> is not declared in parameters)
然后测试方法说明就是
测试[6]

Result result = (new JUnitCore()).run(Request.method(TestFibonacci.class, "test[6]"));
要使用所有参数运行单个测试方法,我建议在一个周期内运行(并可能聚合结果):

int参数scont=Request.aClass(TestFibonacci.class).getRunner().getDescription().getChildren().size();
对于(int i=0;i
 "test[3: fib(6)=8]" (wrong sequence .. <6, 8> pair is 6th, not 3rd)
 "test[6: fib(50)=100]" (the pair <50, 100> is not declared in parameters)
@Parameters // no name=?
public static Iterable<Object[]> data() {
    return Arrays.asList(
         new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
}
Result result = (new JUnitCore()).run(Request.method(TestFibonacci.class, "test[6]"));
int parametersCount = Request.aClass(TestFibonacci.class).getRunner().getDescription().getChildren().size();
for (int i = 0; i < parametersCount; ++i) {
    Result result = (new JUnitCore()).run(Request.method(testClass, "testFloat[" + i + "]"));
    System.out.println("Result " + result.wasSuccessful());
}