반응형
📝단위테스트 (Unit Test)
단위는 일반적 클래스 또는 메소드 수준으로 단위 크기가 작을수록 단위 복잡성이 낮아진다. 즉, 단위 크기르 ㄹ작게 설정해 단위 테스트를 최대한 간단하고 디버깅 쉽게 작성해야한다.
// 단위테스트 예제 코드
@DisplayName("자동차가 전진한다")
@Test
public void moveCar() {
// given
Car car = new Car("dani");
// when
car.move(4);
// then
assertThat(car.getPosition()).isEqualTo(1);
}
📝통합테스트 (Integration Test)
단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈을 모아 테스트하는 것입니다. (DB연결 + 다른 파트 연결 + 솔루션 연결 등...)
발견하기 어려운 버그를 찾을 수 있다는 점이 좋습니다. 예를 들어 환경 버그 (싱글 코어에서는 잘 되지만 쿼드 코어에서는 안 된다 등...)
// 통합테스트
@SpringBootTest
class ApplicationTests {
@Autowired
private HelloController helloController;
@DisplayName("hello 엔드포인트 테스트")
@Test
void 컨텍스트_로딩_테스트() {
assert helloController != null;
}
}
- 통합테스트 어노테이션 종류
종류 | 요약 | Bean 범위 |
@SpringBootTest | 전체 테스트 어노테이션 | 애플리케이션에 주입된 Bean 전체 |
@WebMvcTest | Controller Layer 테스트 | MVC 관련 Bean (Controller, Service) |
@DataJpaTest | Jpa (DB I/O) 테스트 | JPA 관련 Bean (EntityManager) |
@RestClientTest | Rest API 테스트 | RestTemplate 등 일부 Bean |
@JsonTest | Json 데이터 테스트 | Json 관련 일부 Bean |
📝인수테스트
비즈니스쪽에 초점을 두며 프로젝트 참여하는 사람들이 토의해 테스트 시나리오를 작성하고 개발자는 이에 의거해 코드를 작업한다
🔗 참고 및 출처
https://tecoble.techcourse.co.kr/post/2021-05-25-unit-test-vs-integration-test-vs-acceptance-test/
반응형