我對球員類的構造函數的assertEquals()用一個HashSet
public Player(String name, String playerDescription,
HashSet<String> abilities) {
this.name = name;
this.playerDescription;
this.abilities = abilities;
}
創建
Player p = new Player ("Jon Snow", "Brave Swordsman", new HashSet<String>());
我創建了一個addAbilities()
方法這個類的一個實例,添加到HashSet
。
public void addAbilities(String newAbility) {
abilities.add(newAbility);
}
然而,當我去測試方法(使用GET方法)
public String getAbility() {
String abilityString = abilities.toString();
return abilityString;
}
我的測試:
@Test
public void testAddAbility() {
Player p = new Player("Jon Snow", "Brave Swordsman", new HashSet<String>());
s.addAbility("Leadership");
assertEquals("Leadership", s.getAbility());
}
我得到測試輸出的差異。
比較失敗:預計:<[Leadership]>
但<[[Leadership]]>
我的問題是,爲什麼會出現在輸出差異,是很好的做法,使HashSet
這樣?
因爲你整個集合轉換爲字符串,則應該有一個像'球員#hasAbility(字符串)'它調用的方法'能力#contains' – Rogue
我可以」立即明白爲什麼輸出是錯誤的,但爲了解決其他問題,你確定你需要讓構造函數接受一個哈希集?難道你不能在構造函數中創建一個嗎? – Carcigenicate
不要將參數或變量聲明爲'HashSet'。因爲實現可能會改變,所以只使用'Set' ...另外,對於預定義的功能,使用'enum's。 –