我有Spring—Boot应用程序和集成测试,使用Cucumber和WireMock. 在常规的非并行执行模式下执行测试工作正常,没有任何问题,但是当切换到并行执行模式时,测试开始失败.例外情况:
com.github.tomakehurst.wiremock.common.JsonException:
{
"errors" : [ {
"code" : 10,
"source" : {
"pointer" : "/code"
},
"title" : "Error parsing JSON",
"detail" : "Unrecognized field \"code\" (class com.github.tomakehurst.wiremock.common.Errors), not marked as ignorable"
} ]
}
at com.github.tomakehurst.wiremock.common.JsonException.fromJackson(JsonException.java:53)
at com.github.tomakehurst.wiremock.common.Json.read(Json.java:60)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.safelyExecuteRequest(HttpAdminClient.java:519)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.executeRequest(HttpAdminClient.java:489)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.executeRequest(HttpAdminClient.java:466)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.addStubMapping(HttpAdminClient.java:146)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:414)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:409)
at com.github.tomakehurst.wiremock.client.WireMock.givenThat(WireMock.java:115)
at com.github.tomakehurst.wiremock.client.WireMock.stubFor(WireMock.java:119)
WireMock.stubFor
应该是线程安全操作吗?基于例外,看起来没有.如果不是线程安全的,有哪些解决办法(同步/锁定stubFor
的所有执行)?
stub初始化示例:
WireMock.stubFor(post(urlPathMatching("/test"))
.withRequestBody(equalToJson(..))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBody(..)));
WireMock的创建方式如下:
WireMockServer wireMock = new WireMockServer(options()
.port(8000)
.extensions(new ResponseTemplateTransformer(true))
.notifier(new ConsoleNotifier(true)));
wireMock.start();
configureFor(8000);
版本:com.github.tomakehurst:wiremock-jre8-standalone:2.33.0