我一直在尝试构建一个不可变的二叉搜索树数据结构。现在我已经在开发中到目前为止,我试图测试我创建的方法。到目前为止它进展顺利。
我的添加方法:
@Override
public Set<T> add(T t) {
if (t.compareTo(x) == 0) {
return new Add<T>(x, left, right);
} else {
if (t.compareTo(x) < 0) {
return new Add<T>(x, left.add(t), right);
} else {
return new Add<T>(x, left, right.add(t));
}
}
}
我认为导致问题的toString:
@Override
public String toString(){
return "";
}
和单元测试:
@Test
public void SetAddElements(){
activeSet = newSet.add(1);
assertEquals("The element(s) were not added!", 1 , activeSet.add(1));
}
但是,我的.add()方法似乎无法进行单元测试。从我推断出我的Empty类的toString方法返回空格,这意味着返回我的单元测试结果(期望:&lt; 1&gt;,),返回(预期:&lt; 1&gt ;, actual:&lt; 1 &GT)。一个微小的差异,但足以让测试失败。
junit test results and error report
我试图删除toString方法,但显然这只返回默认的toString并且使用api进行研究,但是没有提出任何问题。我正在努力用准确的方式表达问题。任何帮助将不胜感激。
答案 0 :(得分:0)
部分activeSet.add(1)
会返回Set
。但是在这一行:
assertEquals("The element(s) were not added!", 1 , activeSet.add(1));
您将其与数字1进行比较。这不匹配,因为类型甚至不兼容。
也许您打算从toString
结果中获取add
?
activeSet.add(1).toString()
...然后将其与另一个String进行比较?
assertEquals("The element(s) were not added!", "1", activeSet.add(1).toString());