9장 단위 테스트
📖 깨끗한 테스트 코드를 만들려면? 세 가지가 필요하다. 가독성, 가독성, 가독성.
목차
🗒️ 책에서 기억하고 싶은 내용
TDD 법칙 세 가지
1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
테스트 당 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 부분을 넣어도 된다.
가장 좋은 규칙
● 하나의 함수에 assert문 수를 최소로 줄여라
● 테스트 당 개념을 하나만 테스트하라
F.I.R.S.T
Fast 빠르게 : 테스트는 빨리 돌아야 한다.
Independent 독립적으로 : 각 테스트는 서로 의존하면 안 된다.
Repeatable 반복가능하게 : 테스트는 어떤 환경에서도 반복 가능해야 한다.
Self-Validating 자가 검증하는 : 테스트는 부울(bool)값으로 결과를 내야 한다.
Timely 적시에 : 단위 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현한다.
🗒️ 소감
테스트를 분리하면 중복되는 코드가 많아지는데 이를 해결하는 부분이 인상적이었다. 아직 테스트 코드를 작성해 본 경험이 적고 낯설어서 앞으로 더 많은 코드를 보고 따라 작성해 보아야겠다고 생각했다.
테스트 이야기는 아니지만, `이중 표준`에서 저자가 테스트 코드 뿐만 아니라 실제 코드에서도 크게 무리가 아니라면 StringBuffer를 피한다는 것을 보고 이유가 무엇인지 궁금해졌다.
🗒️ 궁금하거나 어려웠던 내용
X
'도서 > Clean Code' 카테고리의 다른 글
[Clean Code/클린 코드] 8장 경계 (0) | 2023.12.11 |
---|---|
[Clean Code/클린 코드] 7장 오류 처리 (0) | 2023.12.04 |
[Clean Code/클린 코드] 6장 객체와 자료 구조 (0) | 2023.12.04 |
[Clean Code/클린 코드] 5장 형식 맞추기 (0) | 2023.12.04 |
[Clean Code/클린 코드] 4장 주석 (2) | 2023.12.04 |