Object stmt的JUnit测试用例if(obj==null)返回false;
我正在尝试为以下Java代码编写JUnit测试用例: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
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语句换一换。更清楚的问题会有帮助。