JUnit:仅使用静态方法测试助手类

我正在使用JUnit4和Cobertura仅使用静态方法测试助手类。测试方法是一项容易的任务,并且已经完成。

但是,cobertura显示该类没有被测试完全覆盖,因为它没有在任何地方实例化。

我不想创建此类的实例(它是一个帮助程序类),因此第一个解决方案是隐藏构造函数(这通常是帮助程序类的好方法)。

然后,cobertura抱怨测试未涵盖空的私有构造函数。

有什么解决方案可以在这种情况下实现100%的代码覆盖率吗?

高层管理人员(在这种情况下)需要代码覆盖,因此对我而言,获得此特定类的100%很有帮助。

回答:

有几种解决方案:

  1. 您可以添加一个公共构造函数并从测试中调用它。尽管这没有任何意义,但也不会造成太大的伤害。

  2. 创建一个虚拟静态实例(您可以在此处调用私有构造函数)。丑陋,但您可以为该字段命名以传达您的意图(这JUST_TO_SILENCE_COBERTURA是一个好名字)。

  3. 您可以让您的测试 扩展 助手类。这将本质上调用默认构造函数,但您的帮助器类将不再可用final

我建议最后一种方法,特别是因为该类final不再存在。如果您的代码使用者希望添加另一个帮助程序方法,则他们现在可以扩展现有的类并接收一个句柄以获取所有帮助程序方法。这将创建一个辅助方法的耦合,以传达意图(它们属于同一对象)-如果helper类是final

如果要防止用户意外地实例化helper类,请使其成为abstract代替使用隐藏的构造函数。

以上是 JUnit:仅使用静态方法测试助手类 的全部内容, 来源链接: utcz.com/qa/413335.html

回到顶部