728x90
반응형
단위 테스트 (Unit Test)
단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트입니다. 특정 기능이 올바르게 동작하는지 확인하기 위함이며 독립적이고 빠르게 실행됩니다.
통합 테스트 (Intergration Test)
반면 통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트입니다. 모듈 간의 상호작용이 올바르게 동작하는지 확인하기 위함이며 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트합니다.
@SpringBootTest
@ActiveProfiles("test") // 반드시 명시
@Transactional // 테스트 후 데이터 롤백
@DisplayName("[피드백] Integration Test")
슬라이스 테스트
슬라이스 테스트는 특정 레이어(ex. controller, service, repository)에 대한 테스트입니다.애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인하기 위해 작성됩니다. 스프링의 특정 컴포넌트만 로드하여 테스트하므로 상대적으로 빠르게 실행됩니다. 관련된 어노테이션으로는 @WebMvcTest, @DataJpaTest 등이 있습니다.
@WebMvcTest(MessageController.class) // 컨트롤러 레이어만 로드
@DisplayName("[피드백] Controller MVC Test")
class MessageControllerMvcTest {
@Autowired
private MockMvc mockMvc;
@MockitoBean // 정책에 따라 @MockBean 대신 사용
private MessageServiceImpl messageService;
}
@DataJpaTest // JPA 관련 컴포넌트만 로드
@Transactional
@DisplayName("[피드백] Repository Unit Test")
class MessageRepositoryTest {
@Autowired
private MessageRepository messageRepository;
}
@ExtendWith(MockitoExtension.class) // Mockito 기능 확장
@DisplayName("[피드백] Service Unit Test")
class MessageServiceImplTest {
@InjectMocks
private MessageServiceImpl messageService;
@Mock
private MessageRepository messageRepository;
}
테스트 코드 작성해야 하는 이유
테스트 코드를 작성하면 버그를 조기에 발견할 수 있으며, 리팩터링을 수행할 경우 유용합니다. 또한 개발 속도를 향상 시킬 수 있으며 코드에 대한 문서로서 역할을 수행할 수 있습니다.
728x90
반응형
'매일 공부 > Backend CS' 카테고리의 다른 글
[매일메일] 스레드, 프로세스, 코어의 수 (0) | 2025.04.03 |
---|---|
[매일메일] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생 (0) | 2025.04.03 |
[매일메일] 동기와 비동기의 차이점은 무엇인가 (0) | 2025.03.28 |
[매일메일] TCP 3-way handshake에 대해서 설명 (0) | 2025.03.27 |
[매일메일] 동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애인가 발생한 경우 조치 (0) | 2025.03.26 |