main method
용도
- 프로그램을 시작
- 구현한 프로그램을 테스트
사칙연산이 가능한 계산기를 구현해 보면 아래와 같이 할 수 있다.
- 프로덕션 코드는 프로그램 구현을 담당하는 부분으로 사용자가 실제로 사용하는 소스 코드를 의미한다.
- 테스트 코드는 프로덕션 코드가 정상적으로 동작하는 지를 확인하는 코드이다.
main method 테스트의 문제점
- Production code와 Test Code가 클래스 하나에 존재한다. 이 때문에 클래스 크기가 커지고, 복잡도가 증가한다.
- Test Code가 실 서비스에 같이 배포된다.
- main method 하나에서 여러 개의 기능을 테스트한다. (복잡도 증가)
- method 이름을 통해 어떤 부분을 테스트하는지에 대한 의도를 드러내기 힘들다.
- 테스트결과를 사람이 수동으로 확인한다.
JUnit
main method를 활용해 테스트할 때 발생하는 문제점을 해결하기 위해 등장한 도구
JUnit 5.x 버전
- 애노테이션을 활용해 테스트 코드 구현
- @Test
- @BeforEach, @AfterEach
- Assertions 클래스의 static assert method를 활용해 테스트 결과 검증
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
Calculator cal;
@BeforeEach
public void setUp() {
cal = new Calculator();
}
@Test
public void 덧셈() {
assertEquals(7, cal.add(3, 4));
}
@Test
public void 뺄셈() {
assertEquals(1, cal.subtract(5, 4));
}
@Test
public void 곱셉() {
assertEquals(6, cal.multiply(2, 3));
}
@Test
public void 나눗셈() {
assertEquals(2, cal.divide(8, 4));
}
@AfterEach
public void tearDown() {
cal = null;
}
}
JUnit 4.x 버전
- 애노테이션을 활용해 테스트 코드 구현하는 방법은 JUnit 5.x와 같다.
- 애노테이션의 패키지 위치와 이름만 다르다.
- @org.junit.Test
- @org.junit.Before, @org.junit.After
Assert 클래스의 static assert method를 활용해 테스트 결과 검증
'테스트코드' 카테고리의 다른 글
숫자 야구 게임 (0) | 2023.03.29 |
---|---|
숫자야구게임 - 단위테스트 (0) | 2023.03.20 |