기본적으로 작성하신 메소드 내부에 분기가 있다면,
각각의 경우를 따로 테스트 메소드로 작성하는 걸 권장합니다.
TDD는 테스트를 기반으로 작성되기 때문에,
아마 케이스를 나누어서 진행하다보면
테스트 대상 메소드 내부에 분기문이 생기게 될 겁니다.
@Test
testA_case1(){
..
}
@Test
testA_case2(){
...
}
a(){
if (case1 ) {
// doSomething
} else {
// doSomething case2
}
}
대략 이런 모습이 되겠죠?
저 그런데 질문이 하나더 있는데요..
public void testAddDocument() throws Exception {
mockListener.documentAdded("New Document"); // mock에서 문서를 추가하는 메소드를 호
출한다..ok
replay(mockListener); 재생 ok <-- 이부분까진 이해 하겠는데..
documentBox.addDoucment("New Document", new byte[0]); <---
documentBox.addDoucment 호출하는데 얘랑 저위에 documentAdded 가 어떤 관계로 엮이는지
verify(mockListener); <-- 또 얘는 왜 에러가 나는지 ㅠㅠ.
}
얘는 다른예젠데요..
public void testDoSum() {
expect(mock.sum(1,2)).andReturn(3); // sum 이 1,2 면 3이다 ..OK
replay(mock); // 재생
this.assertEquals(3,runner.doSum(1,2)); // 역시 doSum에 1,2 넣음 3이
예상된다..OK
verify(mock); // 그런데..왜 또...AssertionError????? 가 난단 말입니까..ㅠㅠ
}
바쁘시겠지만...조언부탁드려요..ㅠㅠ