2014-10-20 69 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也在抱怨。至於爲什麼我們創建私有屬性,然後給它們引用者,那是另一個討論。

相關問題