Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为WireMock构建Java项目_Java_Mocking_Stubbing_Wiremock - Fatal编程技术网

为WireMock构建Java项目

为WireMock构建Java项目,java,mocking,stubbing,wiremock,Java,Mocking,Stubbing,Wiremock,我使用wiremock模拟服务。使用WireMock Standlone jar,我可以通过将.json文件放在_files文件夹中来运行我的模拟api 但是我想为WireMock创建一个Java项目。WireMock网站提供了入门的代码片段。但我知道在基本项目设置中如何面对一些挑战 以下是我遵循的步骤 在intellij中创建了一个gradle项目 为WireMock添加了渐变依赖项。这是我的身材,格雷德尔 dependencies { testCompile group: 'junit',

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

但是我想为WireMock创建一个Java项目。WireMock网站提供了入门的代码片段。但我知道在基本项目设置中如何面对一些挑战

以下是我遵循的步骤

  • 在intellij中创建了一个gradle项目
  • 为WireMock添加了渐变依赖项。这是我的身材,格雷德尔

    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
    
    线程“main”java.lang.NoClassDefFoundError中的异常:com/google/common/io/Resources 位于com.github.tomakehurst.wiremock.core.WireMockConfiguration.(WireMockConfiguration.java:58) 位于com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig(WireMockConfiguration.java:104) 位于com.github.tomakehurst.wiremock.core.WireMockConfiguration.options(WireMockConfiguration.java:108) 位于com.tech.samplemock.main(samplemock.java:11) 原因:java.lang.ClassNotFoundException:com.google.common.io.Resources 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 4更多 不确定发生此错误的原因。除了WireMock中的一些代码片段外,java中没有任何可用的示例项目。提供了一个示例web应用程序,它对构建简单的旧java wiremock框架没有多大帮助

    感谢您的支持


    谢谢。

    要删除该错误,请尝试:

    • 在build.gradle文件中用compile替换testCompile

      依赖项{
      testCompile组:“junit”,名称:“junit”,版本:“4.12”
      编译“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")));
    
            }
        }
    

    伟大的谢谢现在工作。我不明白为什么我们需要明确提到这一点。我可以在单独的函数/单独的函数中编写stubfor并将其添加到WireMocker服务器对象中吗?