Partial EMMA code coverage in Scala Case Class for IntelliJ IDEA 10.5

戏子无情 提交于 2019-12-05 08:03:54

case class A(a: Any) generate a number of methods for you, among them:

  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

Most of these will be reported in the bytecode at the same line number as the class definition.

You could write a reflective utility to call all of these methods in each unit test for your case classes, patch the code coverage tool to ignore that line, or just put up with it.

I know this is a very old question, but the problem still stands today to some extent. Given a simple case class, in order to get a full coverage report from IntelliJ you need to test the unapply method as well.

// Code

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

// Test

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

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

Without it I got 50% coverage for a basic case class like that.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!