2013-12-18 149 views
2

我在我的Scala項目(斯卡拉2.10)中使用幾個案例類。我也在使用jacoco代碼覆蓋工具,版本2.1.2。斯卡拉案例類這()

當jacoco查看一個簡單的案例類,例如

case class TestClass(val x : Int) 
{ 
    def double() : Int = x * 2 
} 

它報告了一個名爲this()的自動生成對象的方法,該方法不帶任何參數。顯然,我的課程只有一個參數。我能滿足jacoco,此方法測試的唯一方法是通過測試像這樣:

test("Case class test") 
{ 
    TestClass 
} 

我的主要問題是:

  • 是這種方法實際上是一個產生一個無參數case class'伴侶對象,還是它是一個jacoco錯誤?
  • 如果前者,它提供了什麼功能?什麼是測試它的正確方法?

謝謝。

N.B.順便說一句,我相信升級到jacoco 2.1.3 可能解決這個問題,但目前這不是我的選擇。

+0

我記得看到提到的問題... http://timezra.blogspot.com/2013/10/jacoco-and-scala.html或https://bitbucket.org/jmhofer/jacoco4sbt/pull-request/4/filter-scala-related-noise-from-jacoco/diff –

回答

1

我認爲this是一個構造函數的表示,因爲沒有該方法生成該名稱,唯一的這樣的構造函數在伴隨對象中。

它必須存在,因爲必須創建伴隨對象。它是私有的,因爲伴隨對象是作爲單例創建的。還要注意,對象只是按需實例化的,所以如果不使用伴隨對象,它就沒有經過測試。

然而,即使TestClass一個簡單的實例應該使用:

val x = TestClass(5) 

調用TestClass同伴對象,這反過來會導致該對象被實例化上的一個方法。

+0

好的。這聽起來很合理,但是,我的測試確實使用了伴隨對象,並且它似乎沒有被稱爲... – paulmdavies