2014-10-20 81 views
1
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是否使用反射访问私有字段?或者我的封装写得不好?

回答

-1

这是我的理解是

aClassVar.a = new Integer(100) 
在Groovy /斯波克

aClassVar.setA(new Integer(100)); 
在Java中

只是语法糖。有些场合我试图做到这一点,但那里并没​​有一个二传手,而Spock也在抱怨。至于为什么我们创建私有属性,然后给它们引用者,那是另一个讨论。

相关问题