Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 使用AssertArrayQuals使用JUnit进行测试时出错_Java_Testing_Junit_Junit4 - Fatal编程技术网

Java 使用AssertArrayQuals使用JUnit进行测试时出错

Java 使用AssertArrayQuals使用JUnit进行测试时出错,java,testing,junit,junit4,Java,Testing,Junit,Junit4,测试此代码位时: public static int maxRowAbsSum(int[][] array) { int[][] maxRowValue = { {3, -1, 4, 0}, {5, 9, -2, 6}, {5, 3, 7, -8} };

测试此代码位时:

public static int maxRowAbsSum(int[][] array) {
    int[][] maxRowValue = {

                            {3, -1,  4,  0},
                            {5,  9, -2,  6},
                            {5,  3,  7, -8}

                       };
    int maxRow = 0;
    int indexofMaxRow = 0;

    for (int row = 0; row < maxRowValue.length; row++) {
        int totalOfRow = 0;
        for (int column = 0; column < maxRowValue[row].length; column++){
             if (maxRowValue[row][column] > 0) {
                 totalOfRow += maxRowValue[row][column];
             } else {
                 totalOfRow -= maxRowValue[row][column];
             }
         }
         if (totalOfRow > maxRow) {
             maxRow = totalOfRow;
             indexofMaxRow = row;
         }
    }
    System.out.println("Row " + indexofMaxRow + " has the sum of " + maxRow);
    return indexofMaxRow;
    }
这突出了红色的assertArrayEquals说:

类型断言中的方法AssertArrayQuals(int[],int[])不适用于参数(int[],int)


我写错了吗?我如何用JUnit测试它,使它没有错误或错误

您正在尝试将
int
int[]
)数组与从
maxrawabssum()
方法返回的单个
int
进行比较。这是行不通的,它将苹果和橙子进行比较,JUnit用它的方法签名来防止这种情况

您应该编写测试以匹配
maxRowAbsSum()
方法返回类型,例如:

@Test
public void shouldCalculateMaxRowAbsSum() {
  int expected = 3; // example value, change to match your test scenario
  assertEquals(expected, Exercise2.maxRowAbsSum(numArray));
}

您正在尝试将
int
int[]
)数组与从
maxRowAbsSum()
方法返回的单个
int
进行比较。这是行不通的,它将苹果和橙子进行比较,JUnit用它的方法签名来防止这种情况

您应该编写测试以匹配
maxRowAbsSum()
方法返回类型,例如:

@Test
public void shouldCalculateMaxRowAbsSum() {
  int expected = 3; // example value, change to match your test scenario
  assertEquals(expected, Exercise2.maxRowAbsSum(numArray));
}

i是一个int数组,而Exercise2.maxRowAbsSum(numArray)返回int。
无法比较它们,因此会出现错误。

i是一个int数组,而Exercise2.maxroabssum(numArray)返回int。
比较它们是不可能的,因此会出现错误。

我修复了代码,但仍然使用Karol的示例:


与刚刚返回具有最大值的行的索引的
return indexOfMaxRow
不同,我将其更改为
return maxRow
,它返回的是23,而不是JUnit期望的2。

我修复了代码,但仍然使用了Karol的示例:


我将其更改为
return maxRow
,而不是刚刚返回具有最大值的行的索引的
return indexOfMaxRow
,它返回的是23,而不是JUnit期望的2。

什么失败了,错误消息是什么?值
3
就是一个例子,调整它以匹配您的测试场景。我第一次将其更改为23,它应该是23。它输出所有行中的最大绝对值总和。当使用JUnit进行测试时,它表示预期的值是“2”,而不是“23”。程序输出23 soI不明白为什么它期望2。什么失败了,错误消息是什么?值
3
就是一个例子,调整它以匹配您的测试场景。我第一次将其更改为23,它应该是23。它输出所有行中的最大绝对值总和。当使用JUnit进行测试时,它表示预期的值是“2”,而不是“23”。程序输出23个soI我不明白为什么它期望2。