[java] JUnit으로 웹 애플리케이션 테스트하기

웹 애플리케이션을 개발할 때, 데이터베이스 연결, 서비스 로직, 컨트롤러 등 여러 가지 요소들이 복잡하게 얽히게 됩니다. 이때 테스트를 통해 각각의 요소를 독립적으로 검증할 수 있습니다.

JUnit은 Java에서 가장 널리 사용되는 테스팅 프레임워크 중 하나입니다. JUnit을 사용하면 웹 애플리케이션의 단위 테스트를 쉽게 작성하고 실행할 수 있습니다.

Maven을 이용한 JUnit 설정

Maven을 사용하여 JUnit을 프로젝트에 추가하는 것은 매우 간단합니다. 프로젝트의 pom.xml 파일에 다음과 같은 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

이렇게 의존성을 추가하면 JUnit을 사용할 수 있게 됩니다.

웹 애플리케이션 컨트롤러 테스트하기

웹 애플리케이션의 컨트롤러는 사용자의 요청을 처리하고 응답을 생성하는 역할을 합니다. 이를 테스트하기 위해서는 JUnit으로 컨트롤러를 테스트할 수 있습니다.

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {AppConfig.class})
public class MyControllerTest {

    @Autowired
    private WebApplicationContext webApplicationContext;
    
    private MockMvc mockMvc;
    
    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }
    
    @Test
    public void testController() throws Exception {
        mockMvc.perform(get("/myurl"))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
            .andExpect(jsonPath("$.result").value("success"));
    }
}

위의 예제에서는 @RunWith, @WebAppConfiguration, @ContextConfiguration 어노테이션을 사용하여 테스트 설정을 지정하고, MockMvc를 사용하여 컨트롤러를 테스트합니다. mockMvc.perform()을 통해 요청을 전송하고, andExpect()를 통해 응답을 검증할 수 있습니다.

데이터베이스 연결 테스트하기

웹 애플리케이션에서는 데이터베이스와의 연결이 중요한 요소입니다. 따라서 데이터베이스에 접속하고 쿼리를 실행하는 부분을 테스트하려면 JUnit을 사용할 수 있습니다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
@Transactional
public class DatabaseTest {

    @Autowired
    private DataSource dataSource;

    @Test
    public void testConnection() throws SQLException {
        Connection connection = dataSource.getConnection();
        
        assertNotNull(connection);
        
        connection.close();
    }
}

위의 예제에서는 @RunWith, @ContextConfiguration 어노테이션을 사용하여 테스트 설정을 지정하고, @Transactional 어노테이션을 사용하여 테스트 종료 시 롤백을 수행합니다. dataSource.getConnection()을 통해 데이터베이스에 접속하고, assertNotNull()을 통해 연결이 올바로 이루어졌는지 검증할 수 있습니다.

결론

JUnit을 사용하여 웹 애플리케이션의 다양한 요소를 테스트하는 방법을 알아보았습니다. 이를 통해 각각의 요소들을 독립적으로 테스트하고 결함을 찾을 수 있습니다. JUnit은 자바 개발자들에게 필수적인 도구이며, 웹 애플리케이션 개발에 큰 도움이 될 것입니다.

참고 자료