Создание Java-проекта для WireMock - PullRequest
0 голосов
/ 16 мая 2018

Я использую Wiremock для издевательства над сервисами. С помощью WireMock Standlone jar я могу запускать мои макеты API, помещая файлы .json в папку __files.

Но я бы хотел создать Java-проект для WireMock. Сайт WireMock предоставляет фрагменты для начала. Но я кое-как сталкиваюсь с проблемами в базовой настройке проекта.

Вот шаги, за которыми я следовал

  1. Создан gradle-проект в intellij
  2. Добавлена ​​зависимость gradle для WireMock. Вот мой 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

Не уверен, почему произошла эта ошибка. И нет никакого примера проекта, доступного в Java, за исключением некоторых фрагментов кода в WireMock. Вот пример веб-приложения здесь , который не очень полезен при создании простой старой инфраструктуры java wiremock.

Ценю вашу поддержку.

Спасибо.

1 Ответ

0 голосов
/ 16 мая 2018

Чтобы удалить эту ошибку, попробуйте:

  • для замены testCompile компиляцией в файле build.gradle

    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")));

        }
    }
...