나는 단위 테스트를 시작할 때입니다. JUnit과 Mockito를 사용합니다. 이것은 테스트하고 싶은 한 가지 예제입니다.중첩 된 루프를 사용하여 메서드를 테스트하는 방법
public List<Person> getPeopleList(List<Aggregate<Person>> aggregateList) {
List<Person> resultList = new ArrayList<Person>();
for (Aggregate<Person> aggregate : aggregateList) {
resultList.add(aggregate);
for (Person person : aggregate) {
resultList.add(person);
}
}
return resultList; // the result is person and aggregate list
}
나는 많은 방법을 시도했지만 잘 할 수 없었다. 예 :
@Test
public void getPeopleListTest(){
ClassUnderTest testedClass = new ClassUnderTest();
Aggregate aggregate = mock(Aggregate.class);
Iterator<Aggregate<Person>> aggregateIterator = mock(Iterator.class);
when(aggregateIterator.hasNext()).thenReturn(true, false);
when(aggregateIterator.next()).thenReturn(aggregate);
List<Aggregate<Person>> aggregateList = mock(List.class);
aggregateList.add(aggregate);
List<Person> list = testedClass.getPeopleList(aggregateList);
assertEquals(1, list.size());
}
감사합니다.
'집계'과 '사람'을 조롱하는 특별한 이유가 있습니까? 내 눈에는 이것이 필요하지 않습니다. –
테스트 대상에 따라 다릅니다. 이러한 인터페이스에 대한 가정없이 메소드를 테스트하려면 모의해야합니다. 자신이 올바르게 행동하면 자신을 모의 할 필요가 없습니다. –
모든 응답을 주셔서 감사합니다. 'Aggregate'과'Person'을 모의하고 싶습니다. 나는 회선을 이해한다고 생각한다 :'when (aggregate.iterator()) thenReturn (Arrays.asList (person) .iterator());''Aggregate' iterator가 호출되면'Person'의 반복자를 반환한다. 그러나 집계와 사람의 수를 어떻게 바꿀 수 있습니까? 예를 들어 확인하고 싶습니다. 2 명과 2 명. 나는 이것을 어떻게하는지 모른다. –
LancerX