【问题标题】:Is it OK to use the static utility methods found in the Whitebox class?可以使用 Whitebox 类中的静态实用程序方法吗?
【发布时间】:2013-11-14 16:25:33
【问题描述】:

我看到一些开发人员正在使用Whitebox 类中的一些方法(即getInternalState()/setInternalState)。

我的问题是这是否是一个好习惯?我问这个是因为这个类在包 org.mockito.internal.util.reflection 中,通常 internal 包中的类不打算被外部世界使用。

【问题讨论】:

    标签: java mockito packages internal


    【解决方案1】:

    如果你看一下代码,这根本不是什么大问题。见这里:https://code.google.com/p/mockito/source/browse/src/org/mockito/internal/util/reflection/Whitebox.java?r=9772247b067621ed5c3cefc356397b0bde5b89f6

    如果移动了,你可以对测试代码做一个完整的替换,这个过程需要 2 分钟。如果它会以某种方式从 Mockito 中删除(我认为这不太可能),那么您可以将该类复制到您的代码中(约 50 行)。如果有任何更改,您的测试将被破坏,您将看到您需要更改它们。没有真正的机会得到隐藏的问题。

    所以如果有必要,我会简单地在测试代码中使用它。

    【讨论】:

      【解决方案2】:

      迟到的答案,但正如我刚刚遇到的那样:

      我认为使用带有“内部”名称的任何东西都是不好的做法。

      对我来说,这需要付出相当大的努力:我现在正在更新我们的 huge 项目设置,并发现相当多的人已经完全使用了那个东西。

      正因为如此;我无法将我们的设置升级到健全的 mockito 2.6.2;但我想我不得不使用 powermock 1.66 / mockito 2.0.42;因为有些人认为使用该 internal 类进行测试“没问题”。

      【讨论】:

      • 你可以把它排除在外。
      • 我不明白你的意思吗?隔离那个类,还是获取源代码并将其放入自己的项目中?
      • Whitebox类的源码是公开的,也很简单。您可以获取该类并将其放入您的代码中,然后修复导入。下一步,您可以将其重命名为 ReflectionUtils,例如,您就完成了。
      猜你喜欢
      • 2011-11-08
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多