单元测试在java中失败并且不确定原因

时间:2015-03-03 21:13:44

标签: java

我在TreeUtils类中有一个方法,用于检查两个二叉搜索树之间结构的simalarity

if(root1 == null&& root2 == null)
    {
        return true;
    }
    if(root1 == null && root2!=null){
        return false;
    }
    if(root1 != null && root2 == null)
    {
        return false;
    }

    boolean leftRecurse = similar(root1.getLeft(), root2.getLeft());
    boolean rightRecurse = similar(root1.getRight(), root2.getRight());

    return leftRecurse && rightRecurse;

然而,当我对此文件运行单元测试时,它会失败。但是如果我从main方法调用这个方法,它就可以了。它不是包或范围问题,因为类似的方法在main方法中起作用。我认为它与

有关
 public BinaryTreeNode getLeft() { 
    assert(this.hasLeft());
    return this.left; 
}

也许是因为现在这是一个单元测试,它正在调用断言? 我应该如何修改我的类似方法以避免这种情况。

这是我的单元测试

public void testSimilar() {
    System.out.println("Test similarity");
    SimpleBST tree = new SimpleBST();
    tree.insert(1);
    tree.insert(2);
    SimpleBST tree2 = new SimpleBST();
    tree2.insert(1);
    tree2.insert(3);
    assertEquals(true, tree.similar(tree2));


}

感谢。

1 个答案:

答案 0 :(得分:1)

假设您使用-ea参数启用了断言,如果没有左子,则程序将抛出AssertionError。但是通过你的设置,递归地你想要评估左右孩子,即使他们是空的。简单地删除断言将起作用。