정오표

====  아래 오탈자는 신판 3쇄에 반영했습니다(2018년 3월 30일)  ====

132쪽 본문 중간 & 각주 (한동희 님)
안 되는 군. 테스트가 실패한다.  키를 위한 객체를 따로 만들어야겠다.

안 되는 군. 테스트가 실패한다.<//주석 번호 ‘4)‘ 추가>  키를 위한 객체를 따로 만들어야겠다.

//하단에 주석 안내선과 역주 추가 

4) 역자 주: JUnit4 버전부터는 배열에 대해서 assertArrayEquals를 사용할 것을 권하고 있다.

 

133쪽 상단 두 번째 줄 & 각주(한동희 님)
상황4)이거나 로직이 조금 복잡했다면

상황5)이거나 로직이 조금 복잡했다면

4) 역자 주: 짝 프로그래밍~

5) 역자 주: 짝 프로그래밍~

 

2018년 3월 9일 
김창준 님 답변: 독자가 지적하신 내용에 대해서는 해당부분 주석에

“JUnit4 버전부터는 배열에 대해서는 assertArrayEquals를 사용할 것을 권하고 있습니다”

라고 달면 되겠습니다.

……

2017년 10월 30일 
한동희 <handhee7@gmail.com>님이 작성:

안녕하세요.
현재 테스트 주도 개발 2쇄를 읽고 있는데요, JUnit 버전 변화에 따라서 주석이 추가되어야 할 것 같아서 문의드립니다.

132페이지에서 Array.equals()가 각각의 원소에 대한 동치성 검사를 수행하는지 여부를 JUnit을 이용하여 테스트 하는 부분입니다.

public void testArrayEquals() {
assertEquals(new Object[] {“abc”}, new Object[] {“abc”});
};

그리고 위의 테스트가 실패한다고 내용에 적혀있습니다.

과거 JUnit3.8.1버전 까지는 위의 테스트 코드가 유효했으나 현재 JUnit4버전 이상부터는 배열에 대한 assertEquals는 Deprecated 되어 있으며 대신 assertArrayEquals로 대체되어 실제로 배열내의 원소가 동일한지 체크하고 있는 것 같습니다.
따라서 과거에는 실패했던 케이스지만 현재는 같은 코드를 작성해도 성공하게 됩니다.

물론 책에 현재 JUnit의 변화를 모두 담을 수는 없겠지만 성공과 실패가 완전히 반대로 나오는 케이스에 대해서는 설명이 필요하지 않을까 싶습니다.

 

==== 신판 1쇄(2쇄에 반영 ) ====

 

p.34

하단 각주 1)에 레베카 위프스 브록(Rebecca Wifs-Brock)이 아래와 같이 바뀌어야 합니다.

-> 레베카 프스 브록(Rebecca Wirfs-Brock)

 

p.130 상단 예제 코드 (이재용 님(lastiverse@gmail.com)의 가이드입니다.)

public void testReduceMoneyDifferentCurrency() {
Bank bank = new Bank();
bank.addRate(“CHF”, “USD”, 2);
Money result = bank.reduce(Money.franc(2), “USD”);
assertEquals(Money.dollar(1), result);
}

문제가 되는 부분: “bank.addRate(“CHF”, “USD”, 2);”

Bank.addRate() 함수가 아직 추가되지 않은 시점입니다.
따라서 컴파일 에러가 떠야하는 상황인데 저자가 제시하는 테스트 주도 개발 방법의 프로세스에 따라서 “아직 작성되지 않은 함수를 미리 테스트 코드에서 사용하고 이 테스트 코드가 정상 작동되도록 실제 코드를 수정”하는 흐름이라면 아직은 틀린게 없습니다.
하지만 예제코드 바로 아래 문단에 저자는 “다음 한 줌의 지저분한 코드면 초록 막대를 볼 수 있다”고 서술하고 있는데요. 그 “한 줌의 코드”라는데 Money 클래스의 reduce() 함수를 수정하는 것이었습니다.
따라서 reduce() 함수만 수정한 해당 시점에는 테스트 코드가 성공할 수 없고 따라서 초록 막대를 볼 수 없습니다.

 

p.132

Array.equals() 테스트 부분에 주석 추가

(~테스트가 실패한다.  키를 위한 객체를 따로 만들어야겠다.)