1

我正在使用 Maven 和 JBehave 进行集成测试。我也在使用 tomcat7 maven 插件,它在集成运行之前开始运行,这样我就可以编写影响我的 api 的 jBehave 故事。

我现在正在尝试包含 Wiremock,因为我有一些我想模拟的外部 HTTP 调用,wiremock 似乎是完美的解决方案。

我不想在 java 中编写任何模拟存根,我在 Wiremock 文档上看到有一个独立模式,您只需将文件和映射放在一个文件夹中,我线模拟将在必要时拾取它们。

我已将其包含在我的 pom.xml 中

<dependency>
      <groupId>com.github.tomakehurst</groupId>
      <artifactId>wiremock</artifactId>
      <version>1.57</version>
      <classifier>standalone</classifier>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

但是当我运行集成测试时,我得到了这个

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"

嵌入式 tomcat7 无法运行。有人可以帮我用 maven 在独立模式下设置线模拟吗?

4

1 回答 1

1

我可以建议尝试 2.0.4-beta 版本吗?

一方面,wiremock-standalone 有自己的 POM,它避免了显式排除传递依赖。它还使用最新的 Servlet API,降低了与容器冲突的风险。

于 2015-10-02T12:01:26.667 回答