我在我的scala项目中使用了几个case类(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
}
我的主要问题是:
-
这个方法实际上是为一个案例类的伴侣对象生成的无参数,还是一个jacoco bug?
-
如果是前者,它提供的功能是什么?测试它的正确方法是什么?
谢谢 .
注:另外,我认为升级到jacoco 2.1.3可以解决这个问题,但这对我来说不是一个选择 .
1 回答
我假设
this
是构造函数的表示,因为没有使用该名称生成该名称的方法,并且唯一的此类构造函数位于伴随对象中 .它必须存在,因为必须创建伴随对象 . 它是私有的,因为伴随对象是作为单例创建的 . 另请注意,对象仅按需实例化,因此如果您不使用随播对象,则无法对其进行测试 .
但是,即使是
TestClass
的简单实例化也应该使用:它在
TestClass
伴侣对象上调用一个方法,该方法反过来导致该对象被实例化 .