Develop/Spring Boot

20. htmlUnit

자라선 2020. 7. 27. 16:54

view html이나 렌더링 된 문서들을 좀 더 심층적으로 테스트하기 위한 유틸리티 유닛 테스트 라이브러리

http://htmlunit.sourceforge.net/gettingStarted.html

 

·        Dependency

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

·        HTML

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <h1 th:text="${name}" name="h1Name">Name</h1>
    <form name="testForm" action="/submit">
        <input name="testName" value="hiInput"/>
        <input type="submit" name="testButton">클릭</input>
    </form>
</body>
</html>

·        JAVA TEST

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
 
@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerTest {
 
    @Autowired
    WebClient webClient;
 
    @Test
    public void htmlUnit() throws IOException {
        HtmlPage page = webClient.getPage("/hello");
        HtmlForm form = page.getFormByName("testForm");
        HtmlSubmitInput button = form.getInputByName("testButton");
        HtmlTextInput textField = form.getInputByName("testName");
        textField.setValueAttribute("new Page");
        HtmlPage page2 = button.click();
        Assert.assertEquals(page2.getElementByName("h1Name").getTextContent(), "new Page");
        System.out.println(page2.toString());
    }
}