[Clean Code] 9-1 TDD

2021. 9. 6. 00:03·IT/Clean Code
반응형

단위 테스트

TDD, Test Driven Development

  • 첫째, 실패하는 단위 테스트를 작성할 때까지 서비스 코드를 작성하지 마라.
  • 둘째, 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성 하라.
  • 셋째, 현재 실패하는 테스트를 통과할 정도의 서비스 코드를 작성 하라.

이렇게 일을 하면 테스트 수천개의 케이스가 생기는데 이를 전부 다 방치를 하면 서비스 코드와 맞먹을 정도의 규모가 되는데 이는 심각한 관리문제를 야기한다.

깨끗한 테스트 코드

테스트 코드는 가독성이 중요하다.

변경 전은 addPage와 assertSubString를 부르는라 중복되는 코드가 매우 많다.
자질구레한 사항은 없애고 테스트 코드 표현의 중점하자.

public void testGetPageHieratchyAsXML() throws Exception
{
    crawler.addPage(root, PathParser.parse("PageOne"));
    crawler.addPage(root, PathParser.parse("PageOne.ChildOne"));
    crawler.addPage(root, PathParser.parse("PageTwo"));

    request.setResource("root");
    request.addInput("type", "pages");

    Responder responder = new SerializedPageResponder();
    SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request))
    String xml = response.getContent();

    assertEquals("text/html", response.getContentType());
    assertSubString("<name>PageOne</name>", xml);
    assertSubString("<name>PageTwo</name>", xml);
    assertSubString("<name>ChildOne</name>", xml);
}

변경 후

public void testGetPageHieratchyAsXML() throws Exception
{
    makePages("PageOne", "PageOne.ChildOne", "PageTwo");
    submitRequest("root", "type:pages")

    assertResponseIsXML();
    assertResponseContains(
        "<name>PageOne</name>","<name>PageTwo</name>","<name>ChildOne</name>"
    );
}
728x90
반응형
저작자표시 비영리 (새창열림)
'IT/Clean Code' 카테고리의 다른 글
  • [Clean Code] 9-3 깨끗한 테스트
  • [Clean Code] 9-2 도메인 특화 테스트
  • [Clean Code] 7-1 예외처리
  • [Clean Code] 6-2 객체지향 절차지향 2
상쾌한기분
상쾌한기분
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
  • 전체
    오늘
    어제
    • 분류 전체보기 (250)
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (5)
        • Spring (2)
        • 프로젝트 (1)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (2)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (25)
        • AI (9)
        • Langchain (8)
        • Web (18)
        • Git (8)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MYSQL
    docker
    파이썬
    performance
    Kafka
    ollama
    Redis
    python
    LLM
    오블완
    Golang
    go
    fluentd
    티스토리챌린지
    http
    백준
    git
    prompt
    Langchain
    CDC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
[Clean Code] 9-1 TDD
상단으로

티스토리툴바