我正在使用IntelliJ IDEA 10.5与8月14日更新的Scala插件v0.4.1338和Scala 2.9.0.1。我最近开始在IDEA中使用EMMA测试覆盖实用程序来生成覆盖率报告。
我无法确定为什么我的Scala案例类的构造函数行只显示部分(黄色)覆盖率。我查看了EMMA常见问题解答并在线研究了此事但没有成功。有没有人知道如何在案例类上达到100%的覆盖率?
答案 0 :(得分:4)
case class A(a: Any)
为您生成了许多方法,其中包括:
A#equals
A#canEqual
A#hashCode
A#toString
A#productPrefix
A#productElement
A#productArity
A#productIterator
A#copy
A.unapply
A.apply
大多数这些将在字节码中以与类定义相同的行号报告。
您可以编写一个反射实用程序,在您的案例类的每个单元测试中调用所有这些方法,修补代码覆盖率工具以忽略该行,或者只是忍受它。
答案 1 :(得分:0)
我知道这是一个非常老的问题,但是这个问题在今天仍然存在。给定一个简单的案例类,为了从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%的覆盖率。