7

8月14日に更新されたScalaプラグインv0.4.1338とScala2.9.0.1を備えたIntelliJIDEA10.5を使用しています。最近、IDEAのEMMAテストカバレッジユーティリティを使用して、カバレッジレポートを生成し始めました。

Scalaケースクラスのコンストラクター行が部分的な(黄色の)カバレッジしか表示していない理由を特定できません。私はEMMAFAQを調べ、オンラインで問題を調査しましたが、成功しませんでした。ケースクラスで100%のカバレッジに到達する方法を誰かが知っていますか?

4

2 に答える 2

5

これは非常に古い質問ですが、問題は今日でもある程度残っています。unapply単純なケースクラスを考えると、IntelliJから完全なカバレッジレポートを取得するには、メソッドもテストする必要があります。

// Code

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

// Test

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

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

それがなければ、私はそのような基本的なケースクラスの50%のカバレッジを得ました。

于 2019-04-20T03:15:32.167 に答える
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

これらのほとんどは、クラス定義と同じ行番号のバイトコードで報告されます。

ケースクラスの各単体テストでこれらすべてのメソッドを呼び出すリフレクティブユーティリティを作成するか、コードカバレッジツールにパッチを適用してその行を無視するか、または単に我慢することができます。

于 2011-08-16T21:47:34.807 に答える