assertArrayEquals测试

时间:2011-06-12 12:49:27

标签: java junit

我在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);
}



}

3 个答案:

答案 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,它有许多针对数组,集合等的内置断言检查。