[英]Building Java Project for WireMock
我正在使用Wiremock模擬服務。 使用WireMock Standlone jar,我可以通過將.json文件放在__files文件夾中來運行模擬api。
但是我想為WireMock創建一個Java項目。 WireMock網站提供了摘要以開始使用。 但是我在基本項目設置中遇到了一些挑戰。
這是我遵循的步驟
為WireMock添加了gradle依賴性。 這是我的build.gradle
dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' testCompile "com.github.tomakehurst:wiremock:2.17.0" }
3.使用以下代碼創建示例類,該代碼取自WireMock網站
import com.github.tomakehurst.wiremock.WireMockServer;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static
com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
public class samplemock {
public static void main(String args[]){
WireMockServer wireMockServer = new WireMockServer(options().port(9999));
wireMockServer.start();
stubFor(get(urlEqualTo("/test"))
.willReturn(aResponse()
.withBody("Hello")));
}
}
但是,在執行此代碼時,我的ide控制台出現錯誤
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/io/Resources
at com.github.tomakehurst.wiremock.core.WireMockConfiguration.<init>(WireMockConfiguration.java:58)
at com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig(WireMockConfiguration.java:104)
at com.github.tomakehurst.wiremock.core.WireMockConfiguration.options(WireMockConfiguration.java:108)
at com.tech.samplemock.main(samplemock.java:11)
Caused by: java.lang.ClassNotFoundException: com.google.common.io.Resources
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
不知道為什么會發生此錯誤。 除了WireMock中的一些代碼片段外,Java中沒有任何可用的示例項目。 提供了一種樣本Web應用程序在這里是不是在建立普通Java wiremock框架沒什么太大的幫助。
感謝您的支持。
謝謝。
要消除該錯誤,請嘗試:
通過在build.gradle文件中進行編譯來替換testCompile
dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compile "com.github.tomakehurst:wiremock:2.17.0" }
在運行之前使用“ gradle build”(或在IDE中執行任務)進行構建
無論如何,Wiremock似乎忽略了您分配的端口。 至少在我執行時。
更新:我添加了WireMock.configureFor("localhost", wireMockServer.port());
在啟動服務器的行之后,它起作用了!
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
public class SampleMock {
public static void main(String args[]){
WireMockServer wireMockServer = new WireMockServer(options().port(9999));
wireMockServer.start();
WireMock.configureFor("localhost", wireMockServer.port());
stubFor(get(urlEqualTo("/test"))
.willReturn(aResponse()
.withBody("Hello")));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.