[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 문서
1
2
3
4
5
6
7
8
9
10
11
|
<!-- 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>
</html>
|
cs |
테스트 코드
@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";
}
}
'Spring Framework > Spring boot #2' 카테고리의 다른 글
[Spring Boot #21] 스프링 부트가 지원하는 인메모리 데이터베이스 (0) | 2021.03.25 |
---|---|
[Spring Boot #20] 스프링 부트 CORS (0) | 2021.03.24 |
[Spring Boot #19] 스프링 부트 Spring HATEOAS (0) | 2021.03.24 |
[Spring Boot #18] 스프링 부트 ExceptionHandler (0) | 2021.03.24 |
[Spring Boot #16] 스프링 웹 MVC : Thymeleaf 템플릿 (0) | 2021.03.15 |
[Spring Boot #15] 스프링 웹 MVC : 인덱스 페이지와 파비콘 (0) | 2021.03.15 |
[Spring Boot #14] 스프링 웹 MVC : 정적 리소스 지원 (0) | 2021.03.15 |
[Spring Boot #13] 스프링 웹 MVC : HttpMessageConverter, ViewResolver (0) | 2021.03.15 |