簡體   English   中英

為WireMock構建Java項目

[英]Building Java Project for WireMock

我正在使用Wiremock模擬服務。 使用WireMock Standlone jar,我可以通過將.json文件放在__files文件夾中來運行模擬api。

但是我想為WireMock創建一個Java項目。 WireMock網站提供了摘要以開始使用。 但是我在基本項目設置中遇到了一些挑戰。

這是我遵循的步驟

  1. 在intellij中創建了gradle項目
  2. 為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM