package com.example.dev;
public class AClass {
private Integer a =10;
...//other code
}
当我尝试在我的Spock方法中访问时:
package com.example.dev;
def 'test a'() {
AClass aClassVar = new AClass()
aClassVar.a = new Integer(100);
...//other testing stuff
}
工作正常。为什么会这样? Spock是否使用反射来访问私有字段?或者我的封装不好写?
答案 0 :(得分:4)
Spock并不感到愧疚,它本身就很常见,请看:Private method in groovy is not private。
虽然可以引用私人班级成员,但这绝对不是一个好习惯。
答案 1 :(得分:-1)
我理解
aClassVar.a = new Integer(100)
在Groovy / Spock中只是的语法糖
aClassVar.setA(new Integer(100));
在Java中。在某些情况下,我试图这样做,并且WASN'一个二传手和Spock抱怨。
至于为什么我们创建私有属性然后给他们设置者,这是另一个讨论。