Создание Java-проекта для WireMock

Я использую 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.

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

Спасибо.


person user2350138    schedule 15.05.2018    source источник


Ответы (1)


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

  • заменить testCompile на компиляцию в вашем файле build.gradle

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

  • для сборки с использованием «градуированной сборки» (или выполнения задач в среде 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")));

        }
    }
person Julieta    schedule 16.05.2018
comment
Отлично. Спасибо. Работаю сейчас. я не понимаю, почему мы должны явно упоминать об этом. - person user2350138; 16.05.2018
comment
Могу ли я написать заглушку в отдельной функции / в отдельной и добавить ее в объект сервера WireMocker? - person user2350138; 16.05.2018