相关疑难解决方法(0)

在JUnit断言中比较数组,简洁的内置方式?

是否有一种简洁的内置方法在JUnit中对两个类似类型的数组进行等于断言?默认情况下(至少在JUnit 4中)它似乎在数组对象本身上进行实例比较.

EG,不起作用:

int[] expectedResult = new int[] { 116800,  116800 };
int[] result = new GraphixMask().sortedAreas(rectangles);
assertEquals(expectedResult, result);
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动完成:

assertEquals(expectedResult.length, result.length);
for (int i = 0; i < expectedResult.length; i++)
    assertEquals("mismatch at " + i, expectedResult[i], result[i]);
Run Code Online (Sandbox Code Playgroud)

..但有更好的方法吗?

java arrays junit assertions

145
推荐指数
6
解决办法
10万
查看次数

如何比较Java Byte []数组?

public class ByteArr {

    public static void main(String[] args){
        Byte[] a = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        Byte[] b = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        byte[] aa = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        byte[] bb = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};

        System.out.println(a);
        System.out.println(b);
        System.out.println(a == b);
        System.out.println(a.equals(b));

        System.out.println(aa);
        System.out.println(bb);
        System.out.println(aa == bb);
        System.out.println(aa.equals(bb));
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么他们都打印假.

当我运行"java ByteArray"时,答案是"false false false false".

我认为a []等于b []但是JVM告诉我我错了,为什么?

java

82
推荐指数
3
解决办法
10万
查看次数

java.util.Arrays.equals(),长度有限

我需要比较两个byte []数组的元素,但只能达到固定长度.对于我使用的整个阵列java.util.Arrays.equals().当然我可以复制子范围(Arrays.copyOf()),但我不想这样做.我也确信在没有新的实用程序方法实现的情况下应该有标准的方法.

我正式需要的是:

java.util.Arrays.equals(byte[] a, byte [] b, int length)
Run Code Online (Sandbox Code Playgroud)

有什么意义吗?我没有看到广泛使用的方法.

再次提出要求防止错误答案: - 数组等于长度限制. - 我有手动实现,但我想用标准的东西替换它. - 我不想要任何副本.

先感谢您.

java arrays containers

3
推荐指数
4
解决办法
4171
查看次数

java奇怪的数组比较

我想比较两个数组.

我初始化它们:

public static int [][] craftarray = {{0,0,0},{0,0,0},{0,0,0}};
public static int [][] stone = {{0,0,0},{0,0,0},{0,0,0}};
Run Code Online (Sandbox Code Playgroud)

当我试图比较它们时使用:

Inventory.craftarray.equals(Craft.stone)
Run Code Online (Sandbox Code Playgroud)

它没有说它们是平等的所以我打印出阵列.

工艺阵列以0的形式返回,而石头返回'[[@ @ 44ffb2'.

为什么会这样?

java arrays

-1
推荐指数
1
解决办法
72
查看次数

标签 统计

java ×4

arrays ×3

assertions ×1

containers ×1

junit ×1