테스트 코드 TDD

ganghee·2022년 2월 23일
0

Test

목록 보기
1/5
post-thumbnail

TDD

TDD란 Test Driven Development의 약자로 '테스트 주도 개발'입니다. 테스트 케이스를 작성하고 이를 통과하는 코드를 반복하여 작성하는 기법입니다. 다음과 같은 프로세스를 가지게 됩니다.

  1. 기능을 구현하는 코드를 작성하기 전에 구현 코드를 위한 테스트 코드를 작성합니다. 구현 코드가 없기 때문에 당연히 테스트 실패가 됩니다.
  2. 테스트 성공을 위한 구현코드를 작성합니다.
  3. 만약 테스트 코드가 계속 실패한다면 리팩토링을 생각해봐야 합니다. 이를 통해서 더 좋은 코드 품질을 만들어 나갈 수 있습니다.

테스트 코드의 장점

구글 공식문서에 따르면 테스트 코드는 다음과 같은 장점이 있습니다.

  • 장애에 관한 신속한 피드백
  • 개발 주기에서 조기 장애 감지
  • 회귀에 신경 쓸 필요 없이 코드를 최적화할 수 있도록 하는 더 안전한 코드 리팩터링
  • 기술적 문제를 최소화하는 안정적인 개발 속도

Given - When - Then

Given- When - Then 패턴은 테스트 코드에서 사용하는 패턴입니다.
Given은 테스트 코드를 실행하기 전에 상태에 대해 정의합니다. 테스트의 조건을 구현하는 것을 의미합니다.
When은 테스트가 실행되는 행동을 구체적으로 구현합니다.
Then은 행동으로 인해 바꿔진 상태를 구현합니다. 기대값과 비교하여 테스트가 정상으로 수행되었는지 확인합니다.

JUnit

  • JUnit은 현재 전 세계적으로 가장 널리 사용되는 'Java 단위 테스트 프레임워크' 입니다. 에릭 감마와 켄트 벡이 탄생시켰습니다. JUnit을 시작으로 CUnit(C언어), CppUnit(C++), PyUnit(Python) 등 xUnit 프레임워크가 탄생하게 되었습니다.

JUnit5 공식문서

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

JUnit Platform

  • JVM위에서 테스트 프레임워크를 위한 기본 API를 제공합니다.
  • IDE(IntelliJ IDEA, Eclipse, NetBeans, Visual Studio Code)와 빌드 툴(Gradle, Maven, Ant)에서 사용할 수 있습니다.

JUnit Jupiter

  • 테스트 및 확장을 작성하기위한 새로운 프로그래밍 모델과 확장 모델의 조합입니다.
  • TestEngine을 제공합니다.

JUnit Vintage

  • 플랫폼에서 JUnit3와 JUnit4 기반의 테스트를 지원하기 위한 TestEngine을 제공합니다.

0개의 댓글