从 JUNIT 以编程方式在远程 Unix 服务器上运行 WireMock

Posted

技术标签:

【中文标题】从 JUNIT 以编程方式在远程 Unix 服务器上运行 WireMock【英文标题】:Programmatically Run WireMock on a remote Unix Server from JUNIT 【发布时间】:2016-08-04 12:29:16 【问题描述】:

首先要感谢 WireMock 团队提供了令人惊叹的模拟解决方案,该解决方案易于使用和集成。

http://wiremock.org/docs/

我有一个具体问题。我在本地机器上的 Junit 测试中运行 WireMock,如下所示。当 WireMock 启动时,它在 8089 端口上运行,如下所示,我可以通过以下链接浏览 URL,非常完美。

http://localhost:8099/xx/xx/invoice/201628JP00006097

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().httpsPort(8089));

wireMockRule.stubFor(get(urlEqualTo("/xx/larxxs/invoice/201627JP00006087"))
        .willReturn(aResponse().withHeader("Content-Type", "text/xml").withBodyFile("K000006087.xml")));

在我的本地机器上托管这个模拟后,我在远程 UNIX 服务器上运行一些批处理作业。然后批处理作业尝试通过 https 链接从 mock 中获取此数据,并且它曾经正常工作。现在远程 UNIX 服务器发生了一些变化,或者我不确定一夜之间发生了什么变化,因为远程 UNIX 机器在尝试从 WireMock 获取数据时抛出错误。虽然 ping 在我的机器上运行以删除 UNIX 机器,反之亦然,但我可以通过本地主机上的浏览器获取数据。

2016-08-03 17:31:50.101 ERROR 19483 --- [main] .w.s.l.s.b.t.OldLarsRestInvoiceGenerator : Exception while getting invoice data from Cybill rest serviceorg.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://10.10.34.238:8089/xx/xx/invoice/201627JP00006087": Connection timed out; nested exception is java.net.ConnectException: Connection timed out

我想问,我们是否可以在远程 UNIX 机器上以编程方式从 Junit 运行 WireMock,以及我们如何做到这一点。就像在@Rule 中一样,我提到它在端口 8089 上运行。我可以在这里也提到主机吗?

我看到我们可以在远程服务器上安装 Jar 文件然后运行它,但是有没有办法以编程方式执行它并在远程服务器上启动 wireMock。

@规则 公共 WireMockRule WireMockRule = 新 WireMockRule(wireMockConfig() .https端口(8089) .host(myUNIXSERVER));

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我觉得你应该试试下面

public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8089));

只是因为现在你在嘲笑 https:// 并使用 https://

【讨论】:

以上是关于从 JUNIT 以编程方式在远程 Unix 服务器上运行 WireMock的主要内容,如果未能解决你的问题,请参考以下文章

Selenium - 以编程方式将 html 转换为 junit

如何以编程方式连接到需要 SSH 隧道的远程数据库服务器?

以编程方式在远程计算机上安装 Windows 服务

Junit实现执行条件,以编程方式禁用测试功能

远程和以编程方式注销活动域用户

如何以编程方式从 Android 中删除 SQLite 数据库