2013-05-10 27 views
0

我試圖寫下面的Java代碼JUnit測試案例:用於stmt的JUnit測試用例if(obj == null)返回false;

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); 
    } 
} 

測試用例我沃特低於:

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) return false;測試用例失敗:

Screenshot

+0

請澄清你的問題。如何定義'obj'?測試的失敗信息是什麼?注意事項:使用assertSame來測試布爾值不是很乾淨。使用assertTrue()和assertFalse()。當您已經測試過instanceof時,不需要測試null值。 null不是任何事物的實例。但最重要的是:爲了測試你的類的equals方法,你至少應該在測試中調用它並驗證結果是否符合你的期望。你在測試中不這樣做。 – 2013-05-10 14:32:46

+0

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)返回false;如果(this == obj)返回true; if(__equalsCalc!= null){return(__equalsCalc == obj); } – user1824878 2013-05-10 15:25:28

+0

測試通過,但是當我嘗試編碼覆蓋時,它顯示紅色的傳遞線(這意味着不包括在內)。 – user1824878 2013-05-10 15:27:21

回答

0

您合作ULD使用assertFalse

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

    assertFalse(crop.equals(null)); 
} 
0

測試案例必須是像

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

bool expected = false; 

assertEquals(expected,cp.equals(obj)); 

NB,如果你想這樣做的爲運營商,看看這個

how to emulate as operator in Java

+0

是的,我試過但沒有工作.. – user1824878 2013-05-10 19:51:31