我在JUnit中测试assertArrayEquals
时遇到此问题,因为我不确定它是如何工作的。我创建了一个方法,所以我可以理解它,但它不起作用。任何人都可以帮忙解决这个代码:
public class ArrayAssert
{
public boolean check(int[] arr2)
{
final int[] arr1 = new int[] { 1, 2, 3 };
arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++)
{
if (arr1[i] != arr2[i])
{
System.out.println("false");
return false;
}
}
System.out.println("true");
return true;
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
ArrayAssert obj = new ArrayAssert();
int[] arr2 = new int[2];
for (int i = 0; i < 2; i++)
{
System.out.println("Enter numbers to check");
arr2[i] = scan.nextInt();
obj.check(arr2);
}
}
}
以下是我使用JUnit
创建的测试用例import static org.junit.Assert.*;
import org.junit.Test;
public class ArrayAssertTest {
int []val = new int[]{1,2,3};
@Test
public void testCheck(int[] val) {
boolean expect = true;
boolean result ;
assertArrayEquals(expect,result);
}
}
答案 0 :(得分:0)
测试代码中的“expect”和“result”应该是填充数组本身。
有关详细信息,请参阅JUnit Assert API了解方法参数。
答案 1 :(得分:0)
我简化了你的代码 这是我要测试的课程:
public class ArrayAssert {
public int[] create(){
int [] array = {1,2,3};
return array;
}
}
这是我的另一堂课:
import static org.junit.Assert.*;
import org.junit.Test;
public class ArrayAssertTest {
int []val = new int[]{1,2,3};
@Test
public void testCheck() {
ArrayAssert sample = new ArrayAssert();
assertArrayEquals(val, sample.create());
}
}
我注意到你的代码中有2个问题: 第一:任何测试都不能采取任何参数 第二:assertArrayEquals只接受数组作为参数,你的参数是布尔值,如果它们是布尔数组,那就没问题了。
我希望代码和解释清楚明白。
答案 2 :(得分:0)
Checkout Hamcrest,它有许多针对数组,集合等的内置断言检查。