测试第三方Java SDK的静态方法

时间:2017-04-26 02:27:22

标签: java android unit-testing

我已经使用Java,特别是在Android中工作了几个月,而且我发现使用PowerMockito是我不想做的事情。保持工作的复杂性超过了它的任何好处。我也认为我同意我在Stackoverflow上阅读的大部分评论都说不要使用PowerMockito,所以在回答我的问题时请记住这一点。我正在寻找没有PowerMockito进行测试的指导。

我的问题是,在编写与具有静态方法的第三方SDK接口的代码时,您将如何测试它?具体来说,当看起来唯一真正值得测试的是一种行为?即静态方法被调用?

我可以并且确实将这些第三方服务放在适配器类后面。我可以测试我的适配器是否被调用。但是你怎么忍受不能测试第三方本身被调用并且可能确认它被称为哪个参数?这是我工具箱中唯一可用的东西吗?尽可能地限制逻辑,以便未经测试的区域不太可能失败?

当向来自动态类型语言的人解释这一点时,你会说测试没有价值吗?我在这一点上想到这些测试价值很低,但我可以理解为什么其他人会想要测试这种东西。它是我在我曾经研究过的Ruby项目中所看到的那种测试。

1 个答案:

答案 0 :(得分:1)

我过去在类似情况下做过的一件事:

  • 创建了一个小的包装器接口和一个调用该静态方法的impl类;并测试验证包装器是否被调用
  • 单个测试用例,它调用impl类,从而调用真正的静态方法。

如果一个人“幸运”那个调用具有可观察的效果,例如抛出一些异常(这就是我的上下文中有很多静态代码的问题 - 除非整个堆栈正在运行,否则它会断开)。然后你检查一下。但我也同意:这样做没有多大价值。它证明了正确的管道,代价是当静态方法的行为发生变化时会发生变化。