TDD라기 보다는 unit테스트에 대한 전반적인 팁이다.
테스트에 주석을 달기보다는
잘 지은 이름으로 문서화하자.
책에서는 ATM 도메인으로 예시를 들었다.
doingSomeOperationGenerateSomeResult
(어떤 동작을 하면 어떤 결과가 나온다.)
someResultOccuersUnderSomeCondition
(어떤 결과는 어떤 조건에서 발생한다.)
Tip: 테스트하려는 맥락을 제안하기 보다는 어떤 맥락에서 일련의 행동을 호출했을 때
어떤 결과가 나오는지를 명시하는 것이 좋다고 한다. 위의 두가지는 좋다.
이것을 적용하면,
멋지지 않은 이름 | 멋진 이름 |
makeSingleWithdrawal | withdrawalReducesBalanceByWithdrawnAmount |
attempToWithdraw | withdrawalOfMoreThanAvailableFunsGeneratesError |
multipleDeposits | multipleDepositsIncreaseBySumOfDeposits |
givenSomeContextWhenDoingSomeBehaviorThenSomeResultOccurs
(주어진 조건에서 어떤 일을 하면 어떤 결과가 나온다.)
----> WhenDoingSomeBehaviorThenSomeResultOccurs
(주어진 조건에서 어떤 일을 하면 어떤 결과가 나온다.)
BBD(행위주도개발)에서 말하는 given-when-then 같은 양식을 사용할 수도 있다.
하지만 읽기에 길고 복잡한 경우가 많다!
특히 givenSomeContext 부분은 제거해서 독자가 너무 많은 일을 하지 않도록 만들자.
그러면 처음에 언급한 좋은예인 doingSomeOperationGenerateSomeResult와 일치한다.
참고: 자바와 JUnit을 활용한 실용주의 단위 테스트 | 유동환 옮김 | 길벗
'TDD' 카테고리의 다른 글
Junit5 에러 DuplicateJsonObjectContextCustomizer (0) | 2020.10.26 |
---|---|
@Mock와 @MockBean의 차이점? 아직 잘 모르겠다. (0) | 2019.10.14 |
댓글