我对球员类的构造函数的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。 –