【发布时间】:2016-12-15 17:02:13
【问题描述】:
我正在使用 pack jvm consumer 编写测试,运行测试时出现以下错误:-
代码:-
@Test
public void createUser() throws Exception {
Map<String, String> responseHeaders = new HashMap<>();
responseHeaders.put("Content-Type", "application/json;charset=UTF-8");
PactFragment fragment = buildPublisherRequest(responseHeaders);
MockProviderConfig config = MockProviderConfig.createDefault();
MappingJackson2HttpMessageConverter converter = getMappingConverter();
RestTemplate template = new RestTemplate(Collections.<HttpMessageConverter<?>> singletonList(converter));
VerificationResult result = fragment.runConsumer(config, config1 -> {
ConfigApplication ds = new ConfigApplication();
RestApiServiceImpl rs = new RestApiServiceImpl();
ReflectionTestUtils.setField(ds, "host", config.url());
ReflectionTestUtils.setField(ds, "restApiService", template);
});
if (result instanceof PactError) {
throw new RuntimeException(((PactError)result).error());
}
assertEquals(ConsumerPactTest.PACT_VERIFIED, result);
}
上面代码中fragment.runConsumer(...)这一行发生错误。
错误:-
java.lang.NoClassDefFoundError: io/netty/util/concurrent/RejectedExecutionHandlers
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:70)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:65)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:56)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:48)
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:40)
at unfiltered.netty.Engine$Default$.workers(Engine.scala:22)
at unfiltered.netty.Engine$Default$.workers(Engine.scala:20)
at unfiltered.netty.Server.unfiltered$netty$Server$$workerGrp$lzycompute(Server.scala:43)
at unfiltered.netty.Server.unfiltered$netty$Server$$workerGrp(Server.scala:43)
at unfiltered.netty.Server.destroy(Server.scala:97)
at unfiltered.netty.Server.stop(Server.scala:91)
at au.com.dius.pact.consumer.UnfilteredMockProvider.stop(UnfilteredMockProvider.scala:35)
at au.com.dius.pact.consumer.StatefulMockProvider$$anonfun$runAndClose$1.apply(MockProvider.scala:64)
at au.com.dius.pact.consumer.StatefulMockProvider$$anonfun$runAndClose$1.apply(MockProvider.scala:58)
at scala.util.Try$.apply(Try.scala:192)
at au.com.dius.pact.consumer.StatefulMockProvider.runAndClose(MockProvider.scala:57)
at au.com.dius.pact.consumer.ConsumerPactRunner.runAndWritePact(ConsumerPactRunner.scala:31)
at au.com.dius.pact.model.PactFragment.duringConsumerSpec(PactFragment.scala:13)
at au.com.dius.pact.model.PactFragment.runConsumer(PactFragment.scala:21)
现有依赖:-
<dependency>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-consumer-junit_2.11</artifactId>
<version>3.3.3</version>
<scope>test</scope>
</dependency>
我是否需要添加任何其他依赖项?
我该如何解决这个问题?
【问题讨论】:
-
检查是否有正确的 jars 添加到你的 java 构建路径中。
-
这是一个运行时错误,它不在你的类路径中,假设它编译得很好。另一个原因可能是运行时的间接依赖,而不是编译时的依赖。