【问题标题】:Java - Wiremock - Multiple ComponentsJava - Wiremock - 多个组件
【发布时间】:2022-01-27 09:08:06
【问题描述】:

我一直在尝试从 Wiremock 的文档中获取本指南:

https://wiremock.org/docs/junit-jupiter/ - 高级用法 - 编程

因为我希望能够同时模拟多个主机(同一主机,本地环境的唯一端口)。但我不希望这些 @RegisterExtension 位于我的测试类中,而是位于单独的文件中,但这样做 JUnit 不会拾取它们,我不知道为什么。我是不是走错路了?

测试代码:

public class MyTest{
   @Test
   public void testMe(){
      MyIntegration.mock();
   }
}

public MyIntegration{
   @RegisterExtension
   static WireMockExtension wiremock = WireMockExtension.newInstance(wireMockConfig().port(9000)).build();

   public static void mock(){
      var info = wiremock.getRuntimeInfo(); // wireMockServer is null
      wiremock.stubFor(...); // NPE
   }
}

【问题讨论】:

    标签: java junit nullpointerexception junit5 wiremock


    【解决方案1】:

    JUnit Jupiter 扫描测试类以查找 @RegisterExtension 注释并在注释对象上运行生命周期方法,但它不会扫描非测试类,这就是您的示例中未启动服务器的原因。

    你有两个选择:

    1. 创建一个包含WireMockExtension 实例的基类,然后让每个测试类扩展它。
    2. 在您的集成类中,新建一个WireMockServer 实例,然后确保在测试用例之前/之后调用start() 和stop() 方法。

    我的偏好通常是 1) 在这种情况下。

    【讨论】:

    • 不会为每个使用的 WireMockExtension 启动一个服务器吗?如果它只有一个实例并且在我的集成类之间使用,我会非常喜欢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多