반응형

[Spring Boot #17] 스프링 부트 HtmlUnit 써보기

반응형

| HtmlUnit이란 


  • HtmlUnit은 프로그래밍적으로 HTML 사이트와 상호작용할 수 있게 하는 자바 오픈소스입니다.
  • 테스트 프레임워크로서 생각할 수 있지만 브라우져와 프로그래밍적으로 상호작용 할 수 있게 하는 확장된 개념으로 받아들이는 것이 좋습니다.
  • 스프링 4 이후로 스프링에 통합되어 MVC 테스트(특히 템플릿 뷰 테스트) 때 유용하게 쓰일 수 있습니다.
  • http://htmlunit.sourceforge.net/ 공식 사이트를 참고하시면 좋습니다.


| 샘플 코드


프로젝트 구조

|   pom.xml
|
+---src
| +---main
| | +---java
| | | \---com
| | | \---tutorial
| | | \---sptringbootmvc
| | | SampleController.java
| | | SpringBootMvcApplication.java
| | |
| | \---resources
| | | application.properties
| | |
| | +---static
| | \---templates
| | hello.html
| |
| \---test
| \---java
| \---com
| \---tutorial
| \---sptringbootmvc
| \---user
| SampleControllerTest.java


HTML 문서

<!-- hello.html -->
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello Saelobi</title>
</head>
<body>
<h1 th:text="${name}">Name Power</h1>
</body>
</htm


테스트 코드

@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("saelobi");
}

@Test
public void titlePageIsOk() throws Exception{
webClient.getOptions().setThrowExceptionOnScriptError(true);
HtmlPage page = webClient.getPage("/hello");
assertEquals("Hello Saelobi", page.getTitleText());
}
}
  • HtmlPage 객체를 통해 Html 페이지와 자바 언어를 통해 상호작용할 수 있습니다.
  • xpath를 통해 h1 태그의 정보를 얻어서 그것을 테스트하는 코드입니다.
  • 웹 페이지의 타이틀이 무엇인지 테스트할 수 있는 등 여러가지 웹 클라이언트와 상호할 수 있는 API를 제공합니다.
  • 스프링 4이상에서 스프링 MVC와 통합되어 있기 때문에 @Autowired 어노테이션을 통한 의존성 추가만으로 손쉽게 사용할 수 있습니다.


소스 코드

@SpringBootApplication
public class SpringBootMvcApplication {

public static void main(String[] args) {
SpringApplication application = new SpringApplication(SpringBootMvcApplication.class);
application.setWebApplicationType(WebApplicationType.SERVLET);
application.run(args);
}
}
@Controller
public class SampleController {

@GetMapping("/hello")
public String hello(Model model){
model.addAttribute("name", "saelobi");
return "hello";
}
}



참고자료 : https://www.inflearn.com/course/스프링부트


반응형

이 글을 공유하기

댓글

Designed by JB FACTORY