스프링 부트 활용

HtmlUnit

   html을 단일 테스트하기 위한 tool로 스프링에서 지원해준다. 물론 바로 사용할 수는 없고 아래와 같은 의존성을 추가해준다.

<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>

추가되는 의존성 모두 testScope인 것을 알 수 있다. 왜냐하면 테스트할 때만 사용되기 때문이다.

webClient를 만들어서 사용한다. webClient로 특정 페이지에 요청을 보내고 결과를 받아서 HtmlPage라는 인터페이스를 통해 xml, text 등 여러가지로 가져올 수 있다.

form이 있는 경우 form을 채워 submit하는 테스트도 진행해 볼 수 있다.

이제 의존성이 추가되고 나면 MockMvc 대신 WebClient를 주입받아 테스트 할 수 있다.

@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerTest {

  @Autowired
  WebClient webClient;

  @Test
  public void hello() throws Exception {
    HtmlPage page = webClient.getPage("/hello");

    HtmlHeading1 h1 = page.getFirstByXPath("//h1");

    assertThat(h1.getTextContent()).isEqualToIgnoringCase("grace");
  }

}

Reference