JUnit Testing:在写参数化JUnit测试用例交换两个数字时,显示以下错误



显示错误:

. lang。

在我的源程序中,我给出了一个数组作为输入和输出。我在编写参数化JUnit测试用例方面有困难。我用JUnit4。

这是我的源代码。

package BasicTesting;
import java.io.*;
import java.lang.reflect.Array;
import java.util.Scanner;
public class Swap_Array
{
public static void main(String args[])throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i;

int [] array=new int[2];
Scanner sc=new Scanner(System.in);
System.out.println("Enter the two numbers");
for(i=0;i<2;i++) {
array[i] =sc.nextInt();


}
int [] p = swap(array);
System.out.println("after swapping first number"+" "+p[0]+" "+" and second number are"+" " +p[1]);
}

public static int[] swap(int array[]) {
int[] c=new int[2];
int i = array[0];
int j = array[1];


i=i+j;
j=i-j;
i=i-j;
c[0]=i;
c[1]=j;
return c;


}

}

这是我的参数化JUnit测试用例。

package BasicTesting;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class Swap_Parameterized_testcase {

public Swap_Parameterized_testcase(int[] input,  int[] expected) {
super();
this.input= input;

this.expected = expected;
}
Swap_Array ob=new Swap_Array();


private int input[];

private int [] expected;
@Parameters

public static Collection<Object[]> testPrime() {
return Arrays.asList(new Object[][]{{1,2,2,1},{23,44,44,23}});

}



@Test
public void Swap_test() {
assertArrayEquals(expected,ob.swap(input));
}
}

如何将这个JUnit参数化测试用例重写为正确的?

我们怎么写JUnit参数化测试用例,如果我们给输入交换两个数字作为两个数字,而不是一个数组?下面是我的源代码,如果输入是两个数字而不是一个数组。

package BasicTesting;
import java.io.*;
import java.lang.reflect.Array;
import java.util.Scanner;
public class Swap_Numbers
{
public static void main(String args[])throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i,j;
System.out.println("enter first number..");
i=Integer.parseInt(br.readLine());
System.out.println("enter second number..");
j=Integer.parseInt(br.readLine());
int[] p=swap1(i,j);

System.out.println("after swapping first number"+" "+p[0]+" "+" and second number are"+" " +p[1]);
}

public static int[] swap1(int i,int j) {
int[] c=new int[2];


i=i+j;
j=i-j;
i=i-j;
c[0]=i;
c[1]=j;
return c;


}

}

请帮助我重写JUnit参数化测试用例。如果你重写这段代码会更有帮助。

我强烈建议您从Junit 4升级。X到5。它们进行参数化测试的方式略有不同。

运行时告诉你违规行号,但你没有在你的问题中告诉我们。那个信息会很有帮助的。

相信JVM。查看它引用的行并修改它

最新更新