2017-12-07 22 views
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/"); 
+0

여기에 종속성 충돌이 있습니다. 이는 전이 의존성이 도입되었을 가능성이 높습니다. 필자는 maven의 종속성 플러그인이 이러한 경우에 유용하다는 것을 알았습니다. 즉 "mvn dependency : tree"입니다. 그것은 당신에게 의존성의 트리 디스플레이를 줄 것입니다, 이것은 당신에게 도움이 될 것이므로 클래스 패스에서 원하지 않는 버전에 명시 적 제외를 추가 할 수 있습니다. 또한 https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html을 살펴보십시오. – Kristoffer

답변

0

이 당신처럼 뭔가에 의해 현재 사용되는 JAR 파일 아래로 인쇄 할 수 있습니다, 종속성 충돌입니다 :

System.out.println(WebClient.class.getProtectionDomain().getCodeSource().getLocation()); 
System.out.println(HTMLElements.class.getProtectionDomain().getCodeSource().getLocation()); 

그리고 Neko 버전이 해당 HtmlUnit 버전과 호환되는지 확인하십시오.

또한 봄 부팅에는 원하는 HtmlUnit 버전이 포함되어 있습니다.