티스토리 뷰

카테고리 없음

단위테스트(Unit Test)

아나니리 2020. 1. 4. 23:23

자바에서 단위 테스트를 작성하면서 느낀 주관적인 경험과 여러 자료들을 참고했습니다.

단위 테스트란?

인터페이스, 클래스, 메서드 등의 테스트를 작성하고 그것의 실행과 검증을 자동화 한 테스트

Gradle

testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2'
testImplementation 'org.assertj:assertj-core:3.11.1'

단위 테스트 예시

public class CalculatorTest {
    Calculator cal;

    @BeforeEach
    public void setUp() {
        cal = new Calculator();
    }

    @Test
    public void 덧셈() {
        assertThat(cal.add(3, 4)).isEqualTo(7);
    }
}

단위 테스트 장점

  • 디버깅 시간을 줄여준다.
  • 동작하는 문서 역할을 한다.
  • 변화에 대한 두려움을 줄여준다.

단위 테스트에 대한 생각

1.     하나의 테스트가 모든 경우의 수를 대변하지는 못 한다.

위의 예시 코드에서 덧셈의 테스트가 통과되었다고 해서 모든 덧셈이 가능한지는 모릅니다. 위의 예시에서 계산기가 음수를 지원하지 않는다고 하면 cal.add(3, -4)의 코드가 어떤 상황을 발생시키는지 알 수 없습니다. 따라서 이러한 테스트를 추가로 작성하는 것이 좋습니다.
경계값을 고려해서 테스트를 추가 작성하면 이에 따라 내가 작성한 코드가 지원되는 범위를 더 깊게 생각해 볼 기회가 될 수도 있습니다.

 

2.     테스트 코드 작성이 어려운 부분은 분리해서 테스트한다.

검증하고자 하는 클래스나 메서드의 테스트 코드 작성이 어렵거나 크다면 그 부분이 여러 가지 책임을 지고 있는 경우일 수 있습니다. 객체지향 5대 원칙 중 단일 책임 원칙을 생각하면서 메서드나 클래스를 분리한다면 테스트 코드 작성이 더 쉬워질 수 있습니다.

 

3.     private에 대한 테스트

private메서드의 테스트를 위해서 범위를 수정하는 것은 좋지 않다고 생각합니다. 그 메서드를 사용하는 메서드에 테스트를 추가하거나 아니면 2번을 고려해서 책임을 분리할 수 있는지 생각해 보면 좋을 거 같습니다.

 

출처
https://brunch.co.kr/@pubjinson/16
https://github.com/junit-team/junit5-samples/blob/r5.5.2/junit5-jupiter-starter-gradle/build.gradle

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함