所以我有一个充满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());
}
答案 0 :(得分:1)
每当你看到像 ClassName @ SomeNumber 这样的“toString()”的输出时,你可以确定没有为该类实现toString()方法(除非toString()方法实现本身不是这样的)。
在您的情况下,预期值为[000],但您得到[BinaryNumber @ 4896b555]。
尝试在BinaryNumber类中实现toString()方法,并根据assertEquals()期望从此方法返回值。这应该可以解决问题。
答案 1 :(得分:0)
你能告诉我你的测试代码吗?
1.您期望的类型与实际类型不同。
2.BinaryADT类没有覆盖toString方法。