IntelliJ IDEA 10.5的Scala案例类中的部分EMMA代码覆盖率
我正在使用IntelliJ IDEA 10.5和8月14日更新的Scala插件v0.4.1338,以及Scala 2.9.0.1。我最近开始在IDEA中使用EMMA测试覆盖率实用程序来生成覆盖率报告 我无法确定为什么Scala case类的构造函数行只显示部分(黄色)覆盖。我查阅了EMMA常见问题解答,并在网上对此事进行了研究,但没有成功。有人知道我怎样才能在一个案例类上达到100%的覆盖率吗?案例类a(a:any)为您生成许多方法,其中包括:IntelliJ IDEA 10.5的Scala案例类中的部分EMMA代码覆盖率,scala,intellij-idea,code-coverage,emma,Scala,Intellij Idea,Code Coverage,Emma,我正在使用IntelliJ IDEA 10.5和8月14日更新的Scala插件v0.4.1338,以及Scala 2.9.0.1。我最近开始在IDEA中使用EMMA测试覆盖率实用程序来生成覆盖率报告 我无法确定为什么Scala case类的构造函数行只显示部分(黄色)覆盖。我查阅了EMMA常见问题解答,并在网上对此事进行了研究,但没有成功。有人知道我怎样才能在一个案例类上达到100%的覆盖率吗?案例类a(a:any)为您生成许多方法,其中包括: A#等于 A#canEqual A#hashCod
A#等于
A#canEqual
A#hashCode
A#toString
A#productPrefix
A#productElement
A#生产率
A#产品迭代器
A#副本
A.unapply
A.apply
您可以编写一个反射实用程序,在每个单元测试中为您的案例类调用所有这些方法,修补代码覆盖率工具以忽略这一行,或者只是忍受它。我知道这是一个非常古老的问题,但这个问题在某种程度上仍然存在。给定一个简单的case类,为了从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%的基本案例覆盖率。是的,这似乎是正确的。凭直觉,我为隐式hashCode()和equals()函数编写了一些测试,报告的行覆盖率确实增加了。非常感谢。想和大家分享一个自动化的要点吗?这将是一个非常棒的特性,可以使用WordSpec或FunSpec自动神奇地处理case类。