[Java] TDD와 JUnit

geun·2022년 10월 20일

Java

목록 보기
3/3
post-thumbnail

OOP 적인 코드에 다가가기 위한 방법론 중 하나인 TDD에 대해 알아보고
Java에서 Test Code 작성에 도움을 주는 JUnit 프레임워크에 대해서도 알아보겠습니다.

TDD

⚙️ TDD

✏️ TDD란?

  • TDD란 Test Driven Development 의 약자로 테스트 주도개발이라는 의미입니다.
  • 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는 방법론입니다.

✏️ TDD의 장점

1. 객체 지향적인 코드 개발

테스트 코드를 작성한 뒤 구현을 한다면 좀 더 명확한 기능과 구조를 설계할 수 있게됩니다. 이유는 복잡한 기능을 가진 함수를 구현한뒤 그에대한 테스트 코드를 작성하게되면 테스트 방식이 복잡해지며 코드 수정이 되는 경우에는 테스트 코드를 재사용할 수 없기 때문에 자연스럽게 TDD의 목적인 코드의 재사용성을 보장하며 코드를 작성할 수 있게됩니다.

2. 설계 수정 시간의 단축

테스트 코드를 먼저 작성하기 때문에 최소의 설계 안을 만족시키고, 입출력 구조와 기능의 정의를 명확하게 하게되므로 설계의 구조적 문제를 빠르게 찾아낼 수 있습니다.

3. 디버깅 시간의 단축

유닛 테스트 기반의 테스트 코드를 작성하기 때문에 에러가 발생 시 각각의 모듈 별로 테스트를 진행해서 어디서 문제가 발생했는지 빠르게 진단이 가능합니다.

✏️ 유닛 테스트란?

  • 프로그램을 작은 단위로 쪼개어 각 단위가 정확하게 동작하는지 검사함으로써 프로그램의 안정성을 높일 수 있는 작업입니다.

JUnit5

✏️ JUnit

  • Java 진영의 유닛 테스트 프레임워크입니다.
  • assert 메서드로 각 테스트 케이스의 수행 결과를 확인할 수 있습니다.
  • JUnit4 부터 어노테이션의 지원으로 간결하게 사용할 수 있습니다.

🧩 JUnit's 어노테이션

  • @Test : 테스트를 만드는 모듈 역할
  • @DisplayName : 테스트 클래스 또는 테스트 메서드의 사용자 정의 표시 이름을 정의
  • @ExtendWith : 사용자 정의 확장명을 등록하는데 사용
  • @BeforeEach : 각 테스트 메서드 전에 실행됨을 나타냄
  • @AfterEach : 각 테스트 메서드 후에 실행됨을 나타냄
  • @BeforeAll : 현재 클래스의 모든 테스트 메서드 전에 실행됨을 나타냄
  • @AfterAll : 현재 클래스의 모든 테스트 메서드 후에 실행됨을 나타냄
  • @Disable : 테스트 클래스 또는 메서드를 비활성화

🧩 JUnit's Assert 메서드

  • assertArrayEquals(a, b) : 배열 A와 B가 일치함을 확인
  • assertEquals(a, b) : 객체 A와 B가 같은 값을 가지는지 확인
  • assertEquals(a, b, c) : 객체 A와 B가 값이 일치함을 확인( a: 예상값, b:결과값, c: 오차범위)
  • assertSame(a, b) : 객체 A와 B가 같은 객체임을 확인
  • assertTrue(a) : 조건 A가 참인지 확인
  • assertNotNull(a) : 객체 A가 null이 아님을 확인
profile
말하는 감자🥔에서 기록도 하는 감자🥔로 거듭나기

0개의 댓글