Частичное покрытие кода EMMA в классе дел Scala для IntelliJ IDEA 10.5 - PullRequest
6 голосов
/ 17 августа 2011

Я использую IntelliJ IDEA 10.5 с плагином Scala v0.4.1338, обновленным 14 августа, и Scala 2.9.0.1.Недавно я начал использовать утилиту тестирования покрытия EMMA в IDEA для создания отчетов покрытия.

Я не могу определить, почему в строке конструктора моего класса дел Scala показано только частичное (желтое) покрытие.Я просмотрел часто задаваемые вопросы EMMA и исследовал этот вопрос в Интернете безуспешно.Кто-нибудь знает, как я могу достичь 100% покрытия в классе дела?

Ответы [ 2 ]

4 голосов
/ 17 августа 2011

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

Большинство из них будет указано в байт-коде с тем же номером строки, что и определение класса.

Вы можете написать рефлексивную утилиту, чтобы вызывать все эти методы в каждом модульном тесте для ваших классов дел, исправлять инструмент покрытия кода, чтобы игнорировать эту строку, или просто мириться с ней.

0 голосов
/ 20 апреля 2019

Я знаю, что это очень старый вопрос, но проблема все еще стоит сегодня до некоторой степени.Учитывая простой класс дел, чтобы получить полный отчет о покрытии от 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% покрытия для базового класса дел, такого какчто.

...