241216 TIL - Spring 테스트 코드 작성하기

J_log·6일 전
0

1. Spring 테스트의 중요성

테스트는 코드 품질을 보장하고, 새로운 기능을 추가할 때 발생할 수 있는 문제를 예방하는데 중요한 역할을 한다. Spring에서는 여러 테스트 기능을 제공하여 애플리케이션의 각 계층을 쉽게 검증할 수 있다.

2. Spring 테스트 설정

Spring에서는 @SpringBootTest, @WebMvcTest, @DataJpaTest 등 다양한 어노테이션을 통해 테스트할 범위를 지정할 수 있다.
@SpringBootTest는 전체 애플리케이션을 로드하여 통합 테스트를 할 수 있고, @WebMvcTest는 웹 레이어만 테스트할 때 유용하다.

@SpringBootTest
public class MyServiceTests {

    @Autowired
    private MyService myService;

    @Test
    public void testServiceMethod() {
        // 예시 테스트 코드
        assertNotNull(myService.someMethod());
    }
}

3. MockMvc를 이용한 컨트롤러 테스트

웹 애플리케이션에서 컨트롤러를 테스트할 때 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"));
    }
}

4. 데이터베이스와 연동한 테스트

@DataJpaTest 어노테이션을 사용하면 데이터베이스와 연동된 테스트를 손쉽게 작성할 수 있다. 데이터베이스에 대한 테스트가 필요할 때 유용하게 활용된다.

@DataJpaTest
public class MyRepositoryTests {

    @Autowired
    private MyRepository myRepository;

    @Test
    public void testFindByName() {
        MyEntity entity = myRepository.findByName("Test Name");
        assertNotNull(entity);
    }
}

0개의 댓글