[TDD] Test Driven Development

Yono·2024년 6월 5일
post-thumbnail

소개

현재 회사에서 TDD를 기본으로 개발을 하고 있습니다. TDD(Test-Driven Development)는 소프트웨어 개발 방법론 중 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법입니다.

TDD Cycle

TDD의 장점

  • 코드 품질 향상: TDD는 작은 단위의 테스트를 작성하기 때문에 코드의 품질이 향상됩니다. 테스트를 먼저 작성함으로써 명확한 요구 사항을 도출하고, 이를 바탕으로 코드를 작성하게 됩니다.
  • 버그 감소: 초기 단계에서 버그를 발견하고 수정할 수 있습니다. 이는 후반부에서 발생할 수 있는 버그를 줄여줍니다.
  • 설계 개선: 테스트를 작성하면서 더 나은 설계를 도출할 수 있습니다. 이는 코드의 유지보수성을 높이는 데 도움이 됩니다.
  • 개발 속도 증가: 처음에는 느리지만 장기적으로 개발 속도가 증가합니다. 이는 코드의 안정성과 신뢰성을 높여주기 때문입니다.

TDD의 단점

  • 초기 투자 시간: 테스트 작성에 시간이 소요됩니다. 이는 초기 개발 속도를 늦출 수 있습니다.
  • 테스트 유지보수: 테스트 코드의 유지보수 비용이 발생할 수 있습니다. 이는 코드의 변경이 잦을 경우 문제가 될 수 있습니다.
  • 복잡한 테스트 작성: 복잡한 기능의 경우 테스트 작성이 어려울 수 있습니다. 이는 테스트를 설계하는 데 어려움을 줄 수 있습니다.

JUnit 사용하기

현재 회사는 Spring BootMongoDB를 사용하고 있으며, 단위 테스트 프레임워크로 JUnit을 사용하고 있습니다.

JUnit이란?

JUnit은 자바 애플리케이션을 테스트하기 위한 오픈 소스 프레임워크로, 개별 단위(메서드, 클래스 등)의 기능을 독립적으로 테스트할 수 있다..

Maven 예제

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

Gradle 예제

dependencies {
    testImplementation 'junit:junit:4.13.2'
}

JUnit의 주요 특징

  • 간단한 어노테이션: JUnit은 테스트를 정의하기 위해 간단하고 직관적인 어노테이션을 제공합니다.
  • 자동화된 테스트 실행: JUnit을 사용하면 테스트를 자동으로 실행하고 결과를 확인할 수 있습니다.
  • 다양한 어설션 제공: 테스트 결과를 검증하기 위한 다양한 어설션 메소드를 제공합니다.
  • 테스트 스위트: 여러 테스트 케이스를 그룹화하여 함께 실행할 수 있습니다.

JUnit 기본 어노테이션

  • @Test: 테스트 메소드를 정의할 때 사용합니다.
  • @Before: 각 테스트 메소드가 실행되기 전에 수행할 작업을 정의합니다.
  • @After: 각 테스트 메소드가 실행된 후에 수행할 작업을 정의합니다.
  • @BeforeClass: 클래스의 모든 테스트가 실행되기 전에 한 번 수행할 작업을 정의합니다.
  • @AfterClass: 클래스의 모든 테스트가 실행된 후에 한 번 수행할 작업을 정의합니다.
  • @Ignore: 특정 테스트 메소드를 무시할 때 사용합니다.
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
    private Calculator calculator;

    @Before
    public void setUp() {
        calculator = new Calculator();
    }

    @Test
    public void testAdd() {
        int result = calculator.add(2, 3);
        assertEquals(5, result);
    }
}

이런식으로 어노테이션을 사용하여 테스트를 할 수 있다.

지금까지는 기본 개념에 대해 설명하였다. 추후 글에는 현재 프로젝트를 진행하면서 어려웠던 점과 느낀점에 대해 기록하겠다.

JUnit 참고 자료

profile
Java,Spring,JavaScript

0개의 댓글