是否有更简洁的方法来伪造Analytics API进行单元测试

时间:2014-02-02 10:41:28

标签: java unit-testing google-analytics mocking code-injection

我正在尝试创建一个虚假用于我的测试用例,取代了谷歌分析类com.google.api.services.analytics.Analytics。我将使用它来对运行的查询进行断言,并返回自定义响应以确保正确处理结果数据。

我无法扩展Analytics类,因为它唯一的公共构造函数似乎可以正常工作。因此,我创建了一个镜像Google Analytics功能的界面。我必须使用Builder创建真正的分析类,因此我创建了一个包装器类来实现我的Analytics接口并将调用发送到真实交易中。

此时,似乎内部类Analytics.Data不是静态的,因此我无法扩展它,因为“由于某些中间构造函数调用,没有可用的类型为Analytics的实例”。

因此,显而易见的解决方案是创建一个自定义界面,重新创建所有Analytics.Data方法,并从我的界面创建另一个包装器到Analytics.Data类。

这在可测试性的名义下变成了许多无用的类,但我能想到的唯一其他模拟方法是模拟HttpTransport,它本身就是一个巨大的界面,需要对我做的事情进行非常详细的分析不关心做断言。此外,返回值需要有效的JSON(实际上并不重要)和标头值。完成所有这些工作后,我的所有测试都将依赖于此api客户端lib版本的实现。

我是否遗漏了关于如何干净地拦截我的班级和谷歌图书馆之间的图层的任何明显内容?

1 个答案:

答案 0 :(得分:0)

我唯一想到的就是不要自己写。 Here is an implementaion。 如果你不像我一样懒惰,你可以使用mockito来模拟课程。