Junit 测试无效 2D 数组

Tib*_*riu 2 java junit multidimensional-array

我刚刚开始测试。

我试图测试的方法没有返回值(void),但它在自己的类中创建了一个静态二维数组(char[][]),所以根据我的理解,这是它的副作用。

这是一些模拟代码:

public class MyClass{

    public static char[][] table;

    public void setTable(int rows, int columns, int number){
        board = new char[n][m];
        // more code that alters the table in a specific way, 
        // depending on the 3rd parameter
    }
Run Code Online (Sandbox Code Playgroud)

现在为了测试,我正在考虑做类似的事情:

public class SetTableTest{

    @Test
    public void test(){
        MyClass test = new MyClass();
        assertArrayEquals(**********, test.table);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 我是否可以像我一样与静态变量进行比较(test.table),即。这实际上会返回已完成表格的“实例”吗?

  2. 我相当确定二维数组没有assertArrayEquals等效项,那么我该如何解决这个问题呢?

Azi*_*zim 7

答案已经给出,但为了其他用户,我将添加另一种方法。

要比较两个数组 ,double[][] arr1, arr2可以使用Arrays.deepequals(arr1, arr2)which 返回truefalse。该函数的签名是:

java.util.Arrays.deepEquals(Object[] a1, Object[] a2)
Run Code Online (Sandbox Code Playgroud)

对于单元测试,一行就足够了:

assertTrue(Arrays.deepEquals(arr1, arr2));
Run Code Online (Sandbox Code Playgroud)