IntelliJ IDEA 10.5的Scala案例类中的部分EMMA代码覆盖率

ale*_*ntx 6 scala code-coverage emma intellij-idea

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

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

Rad*_*anu 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"))
Run Code Online (Sandbox Code Playgroud)

如果没有它,我对这样的基本案例类别的覆盖率为 50%。


ret*_*nym 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

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

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

  • 愿意分享一个自动化的要点吗?如果使用 WordSpecs 或 FunSpecs 来神奇地自动处理案例类,这将是一个很棒的特性。 (2认同)