Object stmt的JUnit测试用例if(obj==null)返回false;

Object stmt的JUnit测试用例if(obj==null)返回false;,object,junit,null,Object,Junit,Null,我正在尝试为以下Java代码编写JUnit测试用例: private java.lang.Object __equalsCalc = null; public synchronized boolean equals(java.lang.Object obj) { if (!(obj instanceof Crop)) return false; Crop other = (Crop) obj; if (obj == null) return fals

我正在尝试为以下Java代码编写JUnit测试用例:

private java.lang.Object __equalsCalc = null;

public synchronized boolean equals(java.lang.Object obj) {

    if (!(obj instanceof Crop)) 
        return false;
    Crop other = (Crop) obj;
    if (obj == null) return false;
    if (this == obj) return true;
    if (__equalsCalc != null) {
        return (__equalsCalc == obj);
    }
}
测试用例i wote如下所示:

public void testCrop() {
    Crop cp = new Crop();

    Object obj = false;

    cp.equals(obj);
    assertSame(obj instanceof Crop, false);

}


public void testCrop1() {

    Crop other = (Crop) obj;
    // assertSame(other.equals(obj), true);
    assertEquals(obj, other);
}
instanceof
的测试用例工作正常,但在检查
if(obj==null)时返回false测试用例失败:


您可以使用
assertFalse

public void testEqualsNullIsFalse() {
    Crop crop = new Crop();

    assertFalse(crop.equals(null));
}

测试用例必须类似于

Crop cp = new Crop();
Object obj = null;

bool expected = false;

assertEquals(expected,cp.equals(obj));
注意:如果您正在尝试执行类似as运算符的操作,请查看此项


请澄清您的问题。
obj
是如何定义的?测试的失败信息是什么?旁注:使用assertSame测试布尔值不是很干净。使用assertTrue()和assertFalse()。如果已经测试了instanceof,则无需测试null。null不是任何东西的实例。但最重要的是:要测试类的equals方法,至少应该在测试中调用它,并验证结果是否符合预期。在测试中不会这样做;公共同步布尔equals(java.lang.Object obj){if(!(obj instanceof Crop))返回false;Crop other=(Crop)obj;if(obj==null)返回false;if(this==obj)返回true;if(uu equalsCalc!=null){return(u equalsCalc==obj)}测试通过,但当我尝试编码覆盖率时,它以红色显示通过的行。(这意味着没有覆盖)。嗯,null不是Crop的一个实例,是吗!把if语句换一换。更清楚的问题会有帮助。