因此,我有一个充满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());
}

最佳答案

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

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

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

09-11 19:41
查看更多