2
spring-test-htmlunit을 사용하여 HTMLUnit 테스트를 실행하는 데 문제가 있습니다. 웹 클라이언트의 인스턴스에 getPage()를 호출 할 때 다음과 같이 나는 noSuchMethod 오류가 : 나는 스프링 테스트 HtmlUnit과의 HtmlUnit과 버전을 제외하고 최신 버전을 추가하려고했습니다Spring Test HTMLUnit NoSuchMethod CookieManager.getCookies (URL)
java.lang.NoSuchMethodError: com.gargoylesoftware.htmlunit.CookieManager.getCookies(Ljava/net/URL;)Ljava/util/Set;
at org.springframework.test.web.servlet.htmlunit.HtmlUnitRequestBuilder.cookies(HtmlUnitRequestBuilder.java:267)
at org.springframework.test.web.servlet.htmlunit.HtmlUnitRequestBuilder.buildRequest(HtmlUnitRequestBuilder.java:104)
at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:141)
at org.springframework.test.web.servlet.htmlunit.MockMvcWebConnection.getResponse(MockMvcWebConnection.java:111)
at org.springframework.test.web.servlet.htmlunit.MockMvcWebConnection.getResponse(MockMvcWebConnection.java:96)
at org.springframework.test.web.servlet.htmlunit.DelegatingWebConnection.getResponse(DelegatingWebConnection.java:68)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1357)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1274)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:382)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:304)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:451)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:436)
. 나 또한 thymeleaf 템플리트 컴파일에 필요한 nekoHTML에 대한 종속성이 있습니다.
관련의 pom.xml
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
<dependency>
<groupId>org.springframework.test.htmlunit</groupId>
<artifactId>spring-test-htmlunit</artifactId>
<version>1.0.0.RC1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
잘못된 호출 일반적으로
HtmlPage page = webClient.getPage("http://localhost:8080/");
여기에 종속성 충돌이 있습니다. 이는 전이 의존성이 도입되었을 가능성이 높습니다. 필자는 maven의 종속성 플러그인이 이러한 경우에 유용하다는 것을 알았습니다. 즉 "mvn dependency : tree"입니다. 그것은 당신에게 의존성의 트리 디스플레이를 줄 것입니다, 이것은 당신에게 도움이 될 것이므로 클래스 패스에서 원하지 않는 버전에 명시 적 제외를 추가 할 수 있습니다. 또한 https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html을 살펴보십시오. – Kristoffer