2017-12-07 13 views
2

spring-test-htmlunitを使用してHTMLUnitテストを実行する際に問題が発生しました。 WebクライアントのインスタンスにGETPAGE()を呼び出すときは、次のように、私はnoSuchMethodエラーを取得:Springテスト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) 

Iは、ばね試験htmlunitからHTMLUnitバージョンを除くと、最新バージョンを追加しようとしました。私は、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

ここでは、推移的な依存関係が導入されている可能性が高いため、ここでは依存関係が矛盾しています。これらのケースでは、依存関係プラグインが非常に便利であることがわかりました。つまり、「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バージョンが含まれていますが、これはあなたが望むものではない場合があります。

関連する問題