为WireMock构建Java项目

时间:2018-05-15 23:01:15

标签: java mocking stubbing wiremock

我正在使用wiremock来模拟服务。使用WireMock Standlone jar,我可以通过将.json文件放在__files文件夹中来运行我的模拟api。

但我想为WireMock创建一个Java项目。 WireMock网站提供了入门片段。但我在基础项目设置方面遇到了一些挑战。

以下是我遵循的步骤

  1. 在intellij
  2. 中创建了一个gradle项目
  3. 为WireMock添加了gradle依赖项。这是我的build.gradle

    dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testCompile "com.github.tomakehurst:wiremock:2.17.0"
    }
    
  4. 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应用程序提供here,这对构建普通的旧java wiremock框架没什么帮助。

    感谢您的支持。

    谢谢。

1 个答案:

答案 0 :(得分:1)

要删除该错误,请尝试:

  • 通过在build.gradle文件中编译来替换testCompile

    dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compile "com.github.tomakehurst:wiremock:2.17.0" }

  • 使用&#39; gradle build&#39; (或在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")));

        }
    }