java - java中的断言

标签 java assert

我创建了一个断言行,如下

String title = "A";
int year = 2009;
String director = "Zebra";    

VideoObj a = new VideoObj(标题、年份、导演);

Assert.assertFalse(a.equals(new VideoObj(title+"1", year,director)));

为什么会失败? 等价方法如下。

public boolean equals(Object thatObject) {
    if (!(thatObject instanceof VideoObj))
        return false;
    VideoObj that = (VideoObj) thatObject;
    return ((_title.equals(that.title())) && (_director.equals(that.director())) && (_year == that.year()));
}

但是下面的声明

Assert.assertFalse(a.equals(new VideoObj(title, year, director + "1")));

不会失败吗? 有人可以解释为什么第一个断言语句失败而不是第二个吗?

最佳答案

您可能想在以下位置使用 && 而不是 ||:

    return ((_title.equals(that.title())) || (_director.equals(that.director())) || (_year == that.year()));

否则,您将检查任何头衔、导演或年份是否相同,而不是全部相同。

关于java - java中的断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056205/

相关文章:

java - 在多个独立的 hashMap 对象中搜索特定键

Java 套接字损坏 PNG-图像

java - 如何获得年龄并将其用于另一项 Activity ?

c++ - 将断言消息写入日志文件

java - 如何以相同的顺序在另一个列表中断言一个列表

java - 不幸的是,<应用程序名称>已停止

java - 我无法在 Android 8 Oreo(华为)中选择 PDF 文件

Try 中的 Java 断言与多个 catch

junit - 检测从不声明任何内容的 JUnit "tests"

java - Assert.notThrown 可以在抛出异常时指定一条消息