[java] TestContainers로 웹 크롤링 테스트하기

웹 크롤링은 인터넷 상에서 웹 페이지의 정보를 수집하는 작업을 말합니다. 이를 테스트하기 위해서는 웹 페이지를 실제로 실행해보고, 원하는 정보가 제대로 수집되는지 확인해야 합니다. 이때 TestContainers를 활용하면, 손쉽게 웹 크롤링 테스트를 할 수 있습니다.

TestContainers는 도커 컨테이너를 사용하여 테스트 환경을 구축하는 라이브러리입니다. 이를 이용하면 필요한 웹 서버나 데이터베이스 등을 도커 컨테이너로 실행하여 테스트 환경을 구성할 수 있습니다.

아래는 TestContainers를 사용하여 웹 크롤링 테스트를 하는 예제입니다.

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.BrowserWebDriverContainer;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

public class WebCrawlingTest {

    @Test
    public void testWebCrawling() {
        try (BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
                .withCapabilities(new ChromeOptions())) {
            chrome.start();
            WebDriver driver = chrome.getWebDriver();
            
            driver.get("https://example.com");
            
            WebElement element = driver.findElement(By.tagName("h1"));
            String title = element.getText();
            
            Assertions.assertEquals("Example Domain", title);
        }
    }
}

위 코드에서는 BrowserWebDriverContainer를 사용하여 크롬 브라우저를 실행하고, driver.get() 메소드를 이용하여 웹 페이지를 열어 정보를 수집합니다. driver.findElement() 메소드를 사용하면 원하는 요소를 찾을 수 있습니다.

마지막으로 Assertions.assertEquals()를 사용하여 수집한 정보와 기대하는 정보를 비교하여 테스트를 수행합니다.

TestContainers는 다양한 라이브러리와 도커 이미지를 지원하므로, 필요한 환경에 따라 다양한 테스트를 수행할 수 있습니다. 자세한 내용은 TestContainers의 공식 문서를 참조하시기 바랍니다.

참고 자료