首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Java集成测试修改网络连接?

如何从Java集成测试修改网络连接?
EN

Stack Overflow用户
提问于 2012-12-23 14:08:35
回答 1查看 466关注 0票数 3

我编写了一个Java类(MyRestClient),它需要访问第三方RESTful API并对从其服务器返回的RESTful响应进行一些处理。现在,我正在尝试在JUnit和第三方API之间编写一系列成功的集成测试(使用MyRestClient作为底层testng ),以确保该类在各种情况下正确运行:

  • 一切都很完美(RESTful API调用是正确的,服务器返回有意义的响应)
  • 错误的API调用和服务器返回应用层错误代码。
  • 返回各种非200 HTTP代码,包括403、404和500
  • 无网络连接
  • ...etc。

列表中的第四项(“没有网络连接”)是我目前所坚持的。我在幕后使用Jersey来执行实际的REST调用,但是泽西本身就是基于java.net.*的。如果可能的话,我希望在执行shouldThrowExceptionOnBadNetworkConnection()测试方法时“破坏”泽西/Java触发网络连接的能力,然后将其“打开”,以便下一个测试方法能够正常运行。

我一直在研究查尔斯代理,它似乎就是这样做的,但是似乎没有一个在运行时管理它的Java库。

因此,我问:如何为特定的集成测试“关闭”?,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-23 14:23:54

让MyRestClient声明一个受保护的方法,返回该URL,并让它在私有字段中使用该方法,从而使其可测试。

在您的JUnit测试中,您是一个匿名类来覆盖该方法--它返回垃圾:

代码语言:javascript
运行
复制
MyRestClient willFail = new MyRestClient() {
    protected String getUrl() {
        return "http://not.a.real.address";
    }
}

也有一些模拟库可以做类似的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14011606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档