본문 바로가기
TDD

합리적인 테스트 이름만들기

by fabxoe 2019. 9. 24.

TDD라기 보다는 unit테스트에 대한 전반적인 팁이다.

테스트에 주석을 달기보다는

잘 지은 이름으로 문서화하자.  

책에서는 ATM 도메인으로 예시를 들었다.

 

doingSomeOperationGenerateSomeResult
(어떤 동작을 하면 어떤 결과가 나온다.)

 

someResultOccuersUnderSomeCondition
(어떤 결과는 어떤 조건에서 발생한다.)

 

Tip: 테스트하려는 맥락을 제안하기 보다는 어떤 맥락에서 일련의 행동을 호출했을 때

어떤 결과가 나오는지를 명시하는 것이 좋다고 한다. 위의 두가지는 좋다.

이것을 적용하면,

 

멋지지 않은 이름 멋진 이름
makeSingleWithdrawal withdrawalReducesBalanceByWithdrawnAmount
attempToWithdraw withdrawalOfMoreThanAvailableFunsGeneratesError
multipleDeposits multipleDepositsIncreaseBySumOfDeposits

 

 


 

givenSomeContextWhenDoingSomeBehaviorThenSomeResultOccurs
(주어진 조건에서 어떤 일을 하면 어떤 결과가 나온다.)

	----> WhenDoingSomeBehaviorThenSomeResultOccurs
		 (주어진 조건에서 어떤 일을 하면 어떤 결과가 나온다.)

BBD(행위주도개발)에서 말하는 given-when-then 같은 양식을 사용할 수도 있다.

하지만 읽기에 길고 복잡한 경우가 많다!

특히 givenSomeContext 부분은 제거해서 독자가 너무 많은 일을 하지 않도록 만들자.

그러면 처음에 언급한 좋은예인 doingSomeOperationGenerateSomeResult와 일치한다.

 

참고: 자바와 JUnit을 활용한 실용주의 단위 테스트 | 유동환 옮김 | 길벗

댓글