Public class Person {
private Skill[] skills;
public Skill[] getSkills() {
return skills;
}
public void setSkills(Skill[] s) {
if (s!= null) {
skills = new Skill[s.length];
for (int i = 0; i < s.length; i++) {
skills[i] = s[i];
}
}
}
}
}
Предположим, что существует класс skill
. Проблема в том, что в Junit есть тестовый пример, который проверяет метод setSkill vugiving s = сам массив навыков. Этот тестовый пример возвращает Assertion error
, сообщая мне The returned skill array should be the same
, зная, что когда я меняю getSkill
на то, что оба массива одинаковы, тестовый пример проходит.Ошибка утверждения с массивами
Может ли кто-нибудь помочь мне в этом, пожалуйста? как скопировать элементы, а не ссылку? и почему тестовый случай не удается?
тестовый пример:
@Test(timeout = 1000)
public void testGetSkills() {
instance.setSkills(skills);
assertSame("The returned skill array should be the same", instance.getSkills(), skills);
}
Вы можете лучше отформатировать свой код, а также опубликовать тест? – vikingsteve
Я не уверен в ошибке, но почему бы вам просто не установить навыки = s вместо того, чтобы перебирать весь массив? – ddmps
@ Pescis Или используйте 'System.arrayCopy()', если вам явно нужна копия. – berry120