j-unit测试不可变二进制搜索树添加方法

时间:2017-03-05 16:21:24

标签: java unit-testing junit tostring

我一直在尝试构建一个不可变的二叉搜索树数据结构。现在我已经在开发中到目前为止,我试图测试我创建的方法。到目前为止它进展顺利。

我的添加方法:

@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进行研究,但是没有提出任何问题。我正在努力用准确的方式表达问题。任何帮助将不胜感激。

1 个答案:

答案 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());