0

所以我有一个充满junit测试的类和一个充满执行二进制操作的方法的类。测试正在检查我在某些点是否有正确的值。

我没有通过很多测试,因为我认为是返回类型。例如我收到消息

junit.framework.ComparisonFailure: null expected:<[000]> but was <[BinaryNumber@4896b555]>

如果我理解这一点,那就是说它正在寻找一个包含 000 的数组,但它得到了一个 BinaryNumber (这是必需的返回类型)。帮助澄清这里的方法之一。

    public BinaryADT and(BinaryADT y) {
    int[] homeArr = pad(((BinaryNumber) y).getNumber());
    int[] awayArr = ((BinaryNumber) y).pad(getNumber());

    int[] solution = new int[awayArr.length];
    int i = 0;
    String empty = "";

    while(i < solution.length){
        solution[i] = homeArr[i] & awayArr[i];
        i++;
    }
    for(int indexF = 0; indexF < solution.length; indexF++){
        empty = empty + solution[indexF];
    }
    System.out.println(empty);

    return new BinaryNumber(empty);
}

我理解对了吗?如果没有,有人可以解释一下吗?我还想指出,这是我的家庭作业,但我不是要求答案/有人为我做。最多只是在正确方向上的一点。

如果需要,我很乐意澄清更多(我不想让一切陷入困境)。

这也是我在这里的第一篇文章。我试图遵守格式建议,但如果有任何内容低于标准,我深表歉意。

正如这里所建议的是测试方法

public void testAnd1()
{
    BinaryADT x = new BinaryNumber("111");
    BinaryADT y = new BinaryNumber("000");
    BinaryADT z = x.and(y);
    assertNotSame(x,z);
    assertNotSame(y,z);
    assertEquals("000",z.toString());
}
4

2 回答 2

1

每当您看到像ClassName@SomeNumber这样的“toString()”输出时,您可以确定该类没有实现 toString() 方法(除非 toString() 方法实现本身不是这样)。

在您的情况下,预期值为 [000],但您得到的是 [BinaryNumber@4896b555]。

尝试在 BinaryNumber 类中实现 toString() 方法,并按照 assertEquals() 的期望从该方法返回值。这应该可以解决问题。

于 2013-01-25T04:28:11.127 回答
0

你能告诉我你的测试代码吗?

1.您的预期类型与实际类型不同。

2.BinaryADT 类没有覆盖 toString 方法。

于 2013-01-25T02:13:33.417 回答