Сборка 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.

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

Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 073
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  • чтобы заменить 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")));

        }
    }

Отлично. Спасибо. Работаю сейчас. Я не понимаю, почему мы должны прямо упомянуть об этом.

user2350138 16.05.2018 16:29

Могу ли я написать заглушку в отдельной функции / отдельно и добавить ее в объект сервера WireMocker?

user2350138 16.05.2018 17:00

Другие вопросы по теме