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
이 있다고 가정합니다. 문제는 setSkill 메서드를 테스트하는 Junit의 테스트 케이스가 있다는 것입니다. 이 테스트 케이스는 getSkill
을 변경하면 테스트 케이스가 통과하는 두 개의 동일한 참조를 제공한다는 것을 알면서 을 알리는 Assertion error
을 반환합니다.배열에 대한 어설 션 오류
아무도 도와 줄 수 있습니까? 참조가 아닌 요소는 어떻게 복사합니까? 왜 테스트 케이스가 실패합니까?
테스트 케이스는 다음과 같습니다 당신은 요소를 복사하지 않습니다
@Test(timeout = 1000)
public void testGetSkills() {
instance.setSkills(skills);
assertSame("The returned skill array should be the same", instance.getSkills(), skills);
}
코드를 더 형식화하고 테스트를 게시 할 수 있습니까? – vikingsteve
오류에 대해서는 잘 모르겠지만 전체 배열을 반복하지 않고 스킬을 설정하는 것이 어떻습니까? – ddmps
@Pescis 명시 적으로 사본이 필요한 경우'System.arrayCopy()'를 사용하십시오. – berry120