我编写了一个 Java 类 ( MyRestClient
),它需要访问第三方 RESTful API 并对从他们的服务器返回的 HTTP 响应进行一些处理。我现在正在尝试在 3rd 方 API 之间编写一系列成功的集成测试(JUnit
用作底层 testng 库),MyRestClient
以确保此类在各种情况下都能正确运行:
- 一切都很完美(RESTful API 调用正确,服务器返回有意义的响应)
- 错误的 API 调用和服务器返回应用层错误代码
- 返回各种非 200 的 HTTP 代码,包括 403、404 和 500
- 无网络连接
- ...ETC。
该列表中的第 4 项(“无网络连接”)是我目前遇到的问题。我在后台使用Jersey
来执行我的实际 REST 调用,但是 Jersey 本身只是基于java.net.*
. 如果可能的话,我想“破坏”Jersey/Java 在我的shouldThrowExceptionOnBadNetworkConnection()
测试方法执行时触发网络连接的能力,然后将其重新“打开”,以便下一个测试方法可以正常运行。
我一直在研究似乎就是这样做的Charles Proxy,但是似乎没有用于在运行时管理它的 Java 库。
所以我问:如何为特定的集成测试关闭 Java 网络?提前致谢。