我正在尝试将Wiremock集成到Jmeter测试计划中,以便每次执行测试计划时,它将在开始时启动WireMock的实例,然后运行我概述的测试。我遵循了这个答案(https://stackoverflow.com/a/49130518/12912945),但是我遇到的问题是我总是会收到错误:
Response message:Non HTTP response message: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
从我看到的结果来看,即使在测试计划开始时在JSR223采样器中包含以下代码,Wiremock服务器也不会启动:
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.stubbing.StubMapping;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
public class WireMockTest {
public static void main(String[] args) {
WireMockServer wireMockServer = new WireMockServer();
configureFor("127.0.0.1", 8080);
wireMockServer.start();
StubMapping foo = stubFor(get(urlEqualTo("/some/thing"))
.willReturn(aResponse()
.withStatus(200)
.withBody("Hello World")));
wireMockServer.addStubMapping(foo);
}
}
任何人都可以向我指出如何正确整合两者的正确方向,我尝试将其添加到类路径中,但是我觉得我没有正确地做到这一点,或者我错过了一些东西
谢谢!
您正在定义main
函数,但是我看不到您在哪里执行它。换句话说,您的Wiremock初始化代码根本不会执行。
您需要显式调用此main
函数才能执行代码,要完成此操作,请将下一行添加到脚本末尾:
WireMockTest.main()
完成后,JSR223 Sampler将调用main
函数中的代码,然后将启动Wiremock服务器。
另一个选择是删除这些class
和函数声明,然后使用
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.stubbing.StubMapping;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
WireMockServer wireMockServer = new WireMockServer();
configureFor("127.0.0.1", 8080);
wireMockServer.start();
StubMapping foo = stubFor(get(urlEqualTo("/some/thing"))
.willReturn(aResponse()
.withStatus(200)
.withBody("Hello World")));
wireMockServer.addStubMapping(foo);
因为您在JSR223测试元素中定义的脚本不需要入口点
查阅Apache Groovy-为什么和如何使用它一文,以获得有关JMeter测试中Groovy脚本编写的更多信息。