7

我正在使用 IntelliJ IDEA 10.5 和 8 月 14 日更新的 Scala 插件 v0.4.1338 和 Scala 2.9.0.1。我最近开始使用 IDEA 中的 EMMA 测试覆盖率实用程序来生成覆盖率报告。

我无法确定为什么我的 Scala 案例类的构造函数行只显示部分(黄色)覆盖。我查看了 EMMA 常见问题解答并在线研究了此事,但​​没有成功。有谁知道我如何才能在案例类中达到 100% 的覆盖率?

4

2 回答 2

5

我知道这是一个非常古老的问题,但这个问题在某种程度上仍然存在。给定一个简单的案例类,为了从 IntelliJ 获得完整的覆盖率报告,您还需要测试该unapply方法。

// Code

final case class Foo(symbol: String, name: String)

// Test

val myFoo = Foo("TheSymbol", "TheName")

Foo.unapply(myFoo).get should be(("TheSymbol", "TheName"))

没有它,我得到了 50% 的覆盖率来覆盖这样的基本案例类。

于 2019-04-20T03:15:32.167 回答
4

case class A(a: Any)为您生成许多方法,其中包括:

  1. A#equals
  2. A#canEqual
  3. A#hashCode
  4. A#toString
  5. A#productPrefix
  6. A#productElement
  7. A#productArity
  8. A#productIterator
  9. A#copy
  10. A.unapply
  11. A.apply

其中大部分将在与类定义相同的行号的字节码中报告。

您可以编写一个反射实用程序来在您的案例类的每个单元测试中调用所有这些方法,修补代码覆盖工具以忽略该行,或者只是忍受它。

于 2011-08-16T21:47:34.807 回答