단위 테스트: 작고 격리된 애플리케이션 코드 블록(일반적으로 함수 또는 메서드)의 정확성을 확인하는 코드 블록 [출처]
즉, 코드의 최소 기능 단위(보통은 메소드 단위)로 테스트를 진행하는 코드
최근에 TDD(Test-Driven Development, 테스트 주도 개발) 을 많이 사용함에 따라, 테스트의 중요성이 증가함
단위 테스트 이외의 테스트 방식에는 통합 테스트(Integration Test), 기능 테스트(Functional Test) 등이 있다.
새로운 기능 추가시 빠르게 테스트 할 수 있다.
수시로, 반복적으로, 빠르게 테스트 할 수 있다.
프로그램에 문제 발생시, 문제가 발생한 부분을 빠르게 알 수 있다.
테스트 코드가 문서가 될 수 있다.
코드 리펙토링이 용이해진다.
하나의 Test Method에 최소한의 기능만 검증하기
외부 라이브러리 등의 사용을 최소화 하기
FIRST 규칙 따르기
Assertions
JUnit에서는 Assert구문을 사용하여 코드 수행 결과를 판단한다. 아래는 자주 사용하는 메소드 구문이다.
Assertions.assertEquals(expect, actual)
actual의 값이 expect와 같은지 판별
Assertions.assertSame(expect, actual)
actual의 객체가 expect와 동일한 객체인지 판별
Assertions.assertNotNull(Object obj)
obj의 값이 null이 아닌지 판별
Assertions.assertTrue(boolean)
bool의 값이 true인지 판별
이 외의 다양한 구문은 공식문서를 참고
Anotation
@Test
@BeforeEach
, @AfterEach
@BeforeAll
, @AfterAll
package com.watch_collector.hajun.repository;
import com.watch_collector.hajun.domain.User;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.List;
public class UserRepositoryTest {
// MemoryUserRepository
UserRepository repository = new MemoryUserRepository();
@AfterEach
public void 레포초기화(){
repository.removeAllUser();
}
@Test
public void 회원추가(){
// Given
User user = new User("new_id", "1234");
// When
repository.addUser(user);
// Then
Assertions.assertEquals(user, repository.findById("new_id").get());
}
@Test
public void 회원삭제_id(){
// Given
String id = "new_id";
User user = new User(id, "1234");
repository.addUser(user);
// When
User deleted = repository.deleteById(id).get();
// Then
Assertions.assertEquals(user, deleted);
Assertions.assertS
}
@Test
public void 회원검색_id(){
// Given
String id = "new_id";
User user = new User(id, "1234");
repository.addUser(user);
// When
User searched = repository.findById(id).get();
// Then
Assertions.assertEquals(user, searched);
}
@Test
public void 회원목록조회(){
// Given
User user1 = new User("user1", "123");
User user2 = new User("user2", "456");
User user3 = new User("user3", "789");
repository.addUser(user1);
repository.addUser(user2);
repository.addUser(user3);
// When
List<User> list = repository.findAll();
// Then
Assertions.assertEquals(3, list.size());
}
}