我编写了一个Java类(MyRestClient),它需要访问第三方RESTful API并对从其服务器返回的RESTful响应进行一些处理。现在,我正在尝试在JUnit和第三方API之间编写一系列成功的集成测试(使用MyRestClient作为底层testng ),以确保该类在各种情况下正确运行:
列表中的第四项(“没有网络连接”)是我目前所坚持的。我在幕后使用Jersey来执行实际的REST调用,但是泽西本身就是基于java.net.*的。如果可能的话,我希望在执行shouldThrowExceptionOnBadNetworkConnection()测试方法时“破坏”泽西/Java触发网络连接的能力,然后将其“打开”,以便下一个测试方法能够正常运行。
我一直在研究查尔斯代理,它似乎就是这样做的,但是似乎没有一个在运行时管理它的Java库。
因此,我问:如何为特定的集成测试“关闭”?,谢谢。
发布于 2012-12-23 14:23:54
让MyRestClient声明一个受保护的方法,返回该URL,并让它在私有字段中使用该方法,从而使其可测试。
在您的JUnit测试中,您是一个匿名类来覆盖该方法--它返回垃圾:
MyRestClient willFail = new MyRestClient() {
protected String getUrl() {
return "http://not.a.real.address";
}
}也有一些模拟库可以做类似的事情。
https://stackoverflow.com/questions/14011606
复制相似问题