gpt4 book ai didi

java - JUnit 测试用例失败。 java.lang.AssertionError : expected:<[I@12c5431> but was:<[I@14b6bed> 错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:27 24 4
gpt4 key购买 nike

我已经面对这个问题一段时间了,它开始让我感到沮丧。代码需要返回最接近 val 的 k 个元素。如果 k 为负,此方法将抛出 IllegalArgumentException 并在 k == 0 或 k > a.length 时返回零长度数组。当我针对此方法运行测试用例时,它报告:

There was 1 failure:
1) nearestKTest(SelectorTest)
java.lang.AssertionError: expected:<[I@12c5431> but was:<[I@14b6bed>
at SelectorTest.nearestKTest(SelectorTest.java:21)

FAILURES!!!
Tests run: 1, Failures: 1

我知道这意味着预期与实际不符。我就是想不通。 :(

public static int[] nearestK(int[] a, int val, int k) {
int[] b = new int[10];
for (int i = 0; i < b.length; i++){
b[i] = Math.abs(a[i] - val);
}
Arrays.sort(b);
int[] c = new int [k];
for (int i = 0; i < k; i++){
if (k < 0){
throw new IllegalArgumentException("k is not invalid!");
}
else if (k == 0 || k > a.length){
return new int[0];}
else{
c[i] = b[i];}
}
return c;
}


Test case:

import org.junit.Assert;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;


public class SelectorTest {


/** Fixture initialization (common initialization
* for all tests). **/
@Before public void setUp() {
}


/** A test that always fails. **/
@Test public void nearestKTest() {
int[] a = {2, 4, 6, 7, 8, 10, 13, 14, 15, 32};
int[] expected = {6, 7};
int[] actual = Selector.nearestK(a, 6, 2);
Assert.assertEquals(expected,actual);
}
}

最佳答案

您正在比较 Object 引用。要么使用 Arrays.equals比较数组内容

Assert.assertTrue(Arrays.equals(expected, actual));

或 JUnit assertArrayEquals

Assert.assertArrayEquals(expected, actual);

正如@Stewart 所建议的。显然后者更简单。

关于java - JUnit 测试用例失败。 java.lang.AssertionError : expected:<[I@12c5431> but was:<[I@14b6bed> 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com