java - java 单元测试失败,不知道为什么

标签 java

我在 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/

相关文章:

Java 将文件类型映射到文件夹位置

java - 开发javaagents时如何运行测试?

java - 为什么spring boot启动时会清除旧的日志配置

java - Java 中的 CpuTime。它与真实的 CPU 周期有何对应?

Java 脚本存储和加载状态

Java Stream,如何检查Map值的长度

java - 可以同时打开多个 Eclipse 实例吗?

java - 无法匹配具有以下模式的文本 : @some words(optional) :"sometext"+link(optional)

java - dataset.show 上的 ClassCastException

java - 在运行时删除顶级容器