부트 개념과 활용-19.HtmlUnit


스프링 웹 MVC 8부: HtmlUnit

Html을 단위테스트 하기 위한 툴.

폼 전송, 폼 서브밋 하는 걸 Mock할 수도
특정 타입(브라우저)인 척,
문서를 여러 가지 방법으로 엘리먼트를 가져와서 값들을 확인, 비교하거나
클래스 네임으로도, 태그 명으로도 가져올 수 있다.
여러가지 방법으로 엘리먼트 가져오는 것이 가능.

자세한 내용 참조
http://htmlunit.sourceforge.net/gettingStarted.html

HTML 템플릿 뷰 테스트를 보다 전문적으로 하자.

의존성 추가

<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>htmlunit-driver</artifactId>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>net.sourceforge.htmlunit</groupId>
   <artifactId>htmlunit</artifactId>
   <scope>test</scope>
</dependency>

@Autowire WebClient

@ExtendWith(SpringExtension.class) // junit 5 기준
@WebMvcTest(SampleController.class)
class SampleControllerTest {

    @Autowired
    WebClient webClient; // MockMvc와 같이 사용가능
    @Test
    public void hello() throws Exception {
        HtmlPage page = webClient.getPage("/hello");
        HtmlHeading1 h1 = page.getFirstByXPath("//h1"); // XPath 활용
        assertThat(h1.getTextContent().equals("jaeuk"));
    }
}

의존성 주입을 받은 후에는 MockMVC가 아닌 WebClient를 주입받을 수 있다. (MockMvc도 같이 사용 가능)
이를 통해서 getPage 요청을 할 수 있다.

HtmlPage로 바꿔주어야 다양한 기능들(html에 특화된) 활용 가능.




© 2019. by jaeuk