테스트는 코드 품질을 보장하고, 새로운 기능을 추가할 때 발생할 수 있는 문제를 예방하는데 중요한 역할을 한다. Spring에서는 여러 테스트 기능을 제공하여 애플리케이션의 각 계층을 쉽게 검증할 수 있다.
Spring에서는 @SpringBootTest, @WebMvcTest, @DataJpaTest 등 다양한 어노테이션을 통해 테스트할 범위를 지정할 수 있다.
@SpringBootTest는 전체 애플리케이션을 로드하여 통합 테스트를 할 수 있고, @WebMvcTest는 웹 레이어만 테스트할 때 유용하다.
@SpringBootTest
public class MyServiceTests {
@Autowired
private MyService myService;
@Test
public void testServiceMethod() {
// 예시 테스트 코드
assertNotNull(myService.someMethod());
}
}
웹 애플리케이션에서 컨트롤러를 테스트할 때 MockMvc를 사용하면 실제 서버를 띄우지 않고도 HTTP 요청을 시뮬레이션할 수 있다.
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
public class MyControllerTests {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetEndpoint() throws Exception {
mockMvc.perform(get("/some-endpoint"))
.andExpect(status().isOk())
.andExpect(content().string("Expected Response"));
}
}
@DataJpaTest 어노테이션을 사용하면 데이터베이스와 연동된 테스트를 손쉽게 작성할 수 있다. 데이터베이스에 대한 테스트가 필요할 때 유용하게 활용된다.
@DataJpaTest
public class MyRepositoryTests {
@Autowired
private MyRepository myRepository;
@Test
public void testFindByName() {
MyEntity entity = myRepository.findByName("Test Name");
assertNotNull(entity);
}
}