java - 测试第 3 方 Java SDK 的静态方法

标签 java android unit-testing

几个月来,我一直在使用 Java,特别是 Android,我发现使用 PowerMockito 是我不愿意做的事情。保持它工作的复杂性超过了它的任何好处。我还认为我会同意我在 Stackoverflow 上读到的大多数评论,这些评论说不要使用 PowerMockito,所以在回答我的问题时请记住这一点。我正在寻找不使用 PowerMockito 进行测试的指导。

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

我通常可以并且确实将这些第 3 方服务置于适配器类之后。我可以测试我的适配器是否被调用。但是,您如何忍受无法测试调用了第 3 方本身并且可能无法确认调用了哪些参数的情况?这是我工具箱中唯一可用的东西吗?尽可能限制逻辑,使未测试的区域不太可能失败?

当向来自动态类型语言的人解释这一点时,您会说测试没有值(value)吗?在这一点上,我在想这些测试的值(value)很低,但我能理解为什么其他人会想要测试这种东西。这是我在我从事的 Ruby 项目中经常看到的那种测试。

最佳答案

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

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

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

关于java - 测试第 3 方 Java SDK 的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623979/

相关文章:

java - java中霍尔分区的正确性

android - 解析数据时出错 org.json.JSONException : End of input at character 10 of

javascript - 注入(inject) Controller 和模拟 AngularJS 服务

Java Junit 测试问题

javascript - 因期望失败而停止当前 IT 中的执行,但继续 Jasmine 中的规范测试

java - 批量插入导致失败

java - 选择图像区域

java - java编程错误线程异常 "main"java.lang.NumberFormatException

java - 如何让 Android Volley 解析我对工作线程中 POJO 的 Json 响应

android - Dagger2 和 Android