有没有办法提取方法中使用的实例和静态变量,以了解需要模拟哪些对象

Is there a way to extract the instance and static variables used in a method, to get an idea of which objects require to be mocked

我正在开发涉及 Mockito 的 JUnit 测试用例。

在很多情况下,方法中会使用大量实例变量和静态变量。

手动检查方法中的所有代码行以了解需要模拟的对象,以获得更高层次的理解是非常乏味的。

我想知道是否有更简单的方法来提取方法中使用的实例和静态变量。我也是 JUnit 和 Mockito 的新手。谢谢。

你得出了错误的结论。

您发现 很难 为您的生产代码编写良好的单元测试 - 因为它包含太多需要模拟的东西。

您想通过某种方式自动模拟所有可能阻止您的生产代码在单元测试设置中运行的东西来解决这个问题。

错误的方法:您正在尝试解决症状

根本原因很可能是您编写了难以测试 生产代码。答案是:花时间和精力学习如何编写易于测试 生产代码。例如,从这些 videos 开始。

您知道,您的生产代码包含的任何 class 或方法都应遵守 单一责任 原则。仅此一项就促使您使用包含 最少 数量 "external dependencies" 的生产代码。

除此之外:了解使用 static 基本上是好的 OOP 中的异常。当然,它有它的位置 - 但是一旦 "X is static" 翻译成 "X breaks my unit tests" 你又犯错了。 static 的任何使用都会破坏您对某些东西进行单元测试的能力,这清楚地表明您应该再次 修复 您的设计。