이 글은 개발자 필독서인 클린 코드를 읽으며 습득한 내용을 정리한 글입니다. 모든 출처는 해당 저서에 있습니다.
- 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
- 테스트 코드는 실제 코드 못지 않게 중요하다.
- 테스트 코드는 사고·설계·주의가 필요하다.
- 테스트 코드는 실제코드 못지않게 깨끗하게 작성해야 한다.
BUILD-OPERATE-CHECK
패턴을 사용한다.💡 BUILD-OPERATER-CHECK 패턴
테스트 자료 작성 - 테스트 자료 조작 - 조작한 결과가 올바른지 확인
assert
문이 하나인 함수는 결론이 하나라 코드를 이해하기 쉽고 빠르다.예시 - 테스트를 두 개로 분리하여 각각 assert를 수행
public void testGetPageHierarchyAsXml() throws Exception {
givenPages("PageOne", "PageOne.ChildOne", "PageTwo");
whenRequestIsIssued("root", "type:pages");
thenResponseShouldBeXML();
}
public void testGetPageHierarchyHasRightTags() throws Exception {
givenPages("PageOne", "PageOne.ChildOne", "PageTwo");
whenRequestIsIssued("root", "type:pages");
thenResponseShouldContain(
"<name>PageOne</name>", "<name>PageTwo</name>", "<name>ChildOne</name>"
);
}
given-when-then
관례를 사용하여 테스트 코드의 가독성이 향상되었다.@Before
함수에 given/when 부분을 넣고, @Test
함수에 then 부분을 넣는다.클린 테스트는 다음 다섯 가지 규칙을 따른다.
테스트는 빨리 돌아야 한다.
각 테스트는 서로 의존하면 안 된다.
테스트는 어떤 환경에서도 반복이 가능해야 한다.
테스트는 bool 값으로 결과를 내야 한다.
테스트는 적시에 작성해야 한다.
📖 참고
- 로버트 C. 마틴, 『Clean Code 클린 코드 애자일 소프트웨어 장인 정신』, 박재호·이해영 옮김, 케이앤피북스(2010), p183-198.