2016-11-14 41 views
-4
public class TestFailure { 

    @Test 
    public void testSwitch() throws CustomException { 
     Employee emp = new Employee(123, "John", "1234567890", "CEO", 0); 
     Map<Integer,Employee> exhmp = new HashMap<Integer, Employee>(); 
     AllFunctions f = new AllFunctions(); 
     exhmp.put(123, emp); 
     Map<Integer, Employee> htest= f.AddEmployee(); 
     assertTrue(exhmp.equals(htest)); 
    } 
} 

即使控制檯的輸入與員工對象中提供的輸入相同,測試用例也會作爲測試失敗出現。但是,如果員工類別的不同屬性與htest分別進行比較,則測試返回true。 Allfunctions類通過從控制檯詢問詳細信息來創建員工對象,並創建包含所有員工對象的散列表。如何比較在Junit測試用例中其值爲類對象的兩個哈希映射?

+0

你在你的Employee類中覆蓋了'equals'嗎? – assylias

+2

什麼是「AllFunctions」? – Rainer

+2

請提供[mcve]。 –

回答

-1

沒有知道AllFunctions是什麼,我只能猜測你想要達到什麼。

的Hashmap#等於

比較指定對象與此映射的相等。返回 如果給定對象也是映射並且這兩個映射表示相同的映射,則返回true。更正式地說,如果m1.entrySet()。等於(m2.entrySet()),則兩個映射m1和m2表示相同的映射。這確保了equals方法在Map接口的不同實現 之間正常工作。

和Entry#equals將使用它們的equals方法比較key和value。所以如果你在你的Employee類中實現了equals(和hashcode)方法,你的代碼應該可以工作。

+0

爲什麼要投票? – Rainer