提问者:小点点

AndroidWireMock JUnit规则和非JUnitJava用法不起作用


我想使用WireMock集成为Android应用程序编写测试。我尝试使用所有3种不同的Wiremck集成方法-1.使用JUnit规则编写测试2.非JUnit和一般Java用法3.针对独立服务器的WireMock API

我可以在独立服务器上使用WireMock API运行我的测试。但由于我无法使用这种方法在不同的端口上动态运行,因此我转向了另外2种方法。

下面是示例静态编程语言代码(带有预定义的端口)

对于JUnit规则实现

@Rule
@JvmField
var wireMockRule: WireMockRule = WireMockRule(8888)

@Test
fun exampleTest() {
    stubFor(WireMock.get(WireMock.urlPathEqualTo( "/requestURL"))
            .willReturn(WireMock.aResponse().withHeader("Content-Type", "application/json")
                    .withStatus(200).withBody(responseString)))

    // App launch and test assertions

}

对于非JUnit和一般Java使用

@Before
fun setUp() {
    wireMockServer = WireMockServer(wireMockConfig().port(8888))
    wireMockServer.start()

    // Tried it by both commenting and uncommenting the following line
   // configureFor("localhost", wireMockServer.port())
}

@Test
fun exampleTest() {
    val wireMockClient = WireMock("localhost", wireMockServer.port())

    wireMockClient.register(stubFor(WireMock.get(WireMock.urlPathMatching( "/requestURL"))
            .willReturn(WireMock.aResponse().withHeader("Content-Type", "application/json")
                    .withStatus(200).withBody(responseString))))

    // App launch and test assertions
}

对于这两种方法,我都没有得到我存根的响应。我得到了一个空的响应。将“与状态”字段更改为400以查看响应字符串是否有问题,但我也没有得到错误,这就是我确信它根本没有存根的时候!

分享的示例代码中是否缺少任何内容?

注意:使用的JUnit版本是Junit4,用静态编程语言编写测试。


共1个答案

匿名用户

找出了上述实现不起作用的原因。默认情况下,我的请求调用将转到主机和端口10.0.2.2和8080(基于现有代码),我正在存根本地主机和8888上的wioreck调用。一旦请求调用的主机和端口更新,它就开始按预期工作。