Я использую Wiremock для издевательства над сервисами. С помощью WireMock Standlone jar я могу запустить свой макет api, поместив файлы .json в папку __files.
Но я бы хотел создать Java-проект для WireMock. Веб-сайт WireMock предоставляет фрагменты для начала. Но я кое-как сталкиваюсь с проблемами при базовой настройке проекта.
Вот шаги, которым я следовал
Добавлена зависимость 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.
Ценю твою поддержку.
Спасибо.




Чтобы удалить эту ошибку, попробуйте:
чтобы заменить 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")));
}
}
Могу ли я написать заглушку в отдельной функции / отдельно и добавить ее в объект сервера WireMocker?
Отлично. Спасибо. Работаю сейчас. Я не понимаю, почему мы должны прямо упомянуть об этом.