이번 우아한테크코스 시간에는 테스트 작성 기법과 TDD에 관하여서 학습 및 실습을 하였다. 실제로 페어와 TDD로 의식적으로 개발을 하려다 보니, 테스트 케이스를 어떻게 작성해야 할 지 고민을 많이 하게 되는 것 같고, 무엇보다 junit을 능숙하게 사용하지 못하다 보니 턱턱 막히는 경우가 많아 따로 정리해보려고 한다ㅎㅎ
Dependency
처음에는 왜 자동완성이 안될까 고민했었는데 Dependency 설정을 하지 않아서 문제가 있었음을 알 수 있었다..ㅋㅋ
testImplementation 'org.assertj:assertj-core:3.22.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
애노테이션(Annotation)
Junit을 사용하면 애노테이션을 활용하여 테스트 케이스를 구현할 수 있다.
- @Test
- 테스트를 진행 할 메소드
- AssertEquals 등 Assert 클래스의 static 메소드 활용
- @BeforeEach
- 각각의 테스트(@Test)를 진행하기 전에 실행 할 메소드
- @AfterEach
- 각각의 테스트(@Test)를 진행한 후에 실행 할 메소드
- @BeforeAll
- 모든 테스트를 실행하기 전에 단 한번만 실행되는 메소드
- static으로 선언
- @AfterAll
- 모든 테스트를 실행한 후에 단 한번만 실행되는 메소드
- static으로 선언
BeforeAll과 AfterAll이 static으로 선언되는 이유는 static으로 선언해 두어야 각 테스트를 실행하기 전에 실행되어지기 때문이라고 한다.
예시
- BeforeEach 애노테이션을 통해 테스트 진행 전, numbers에 값을 설정해 준다.
- 이 때, Set 자료구조의 특성상 중복된 1은 제거된다.
- Test 애노테이션에서는 실제 테스트가 진행된다.
- BeforeEach의 결과로 Set 자료구조에는 [1, 2, 3]이 들어가 있다.
- 따라서, size()는 3이어야 하므로 이를 assertEquals 메소드를 통해 테스트를 진행한다.
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
private Set<Integer> numbers;
@BeforeEach
void setUp() {
numbers = new HashSet<>();
numbers.add(1);
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
@Test
void setSizeTest() {
assertEquals(numbers.size(), 3);
}
'Language > Java' 카테고리의 다른 글
lambda 예외 핸들링 (0) | 2022.10.02 |
---|---|
[ Junit ] 랜덤 데이터 테스트 (0) | 2022.02.10 |
[ Java ] 쉽게 최대공약수 구하기 (0) | 2022.02.03 |
[ Java ] 문자열 알파벳순 정렬하기 (0) | 2022.01.12 |
[알고리즘] Java로 구현한 Union-find (0) | 2021.07.11 |