我在 TreeUtils 类中有一个方法,用于检查两个二叉搜索树之间结构的相似性
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 方法中工作。我认为这与
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));
}
谢谢。
最佳答案
假设您使用 -ea 参数启用了断言,如果 this 没有左子级,程序将抛出 AssertionError。但是根据您的设置,您希望递归地评估左子节点和右子节点,即使它们为空。只需删除断言即可。
关于java - java 单元测试失败,不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842003/