2013-04-09 35 views
0

在JUNIT測試中,我使用JMOCK。在一些樣品中,我看到類似下面的代碼片段:JMock期望中的第二組括號

 mock.checking(new Expectations(){ 
      { 
       allowing(tmp).assign(
         with(any(String.class)), 
         with(any(String.class)), 
         with(any(Integer.class)), 
         with(any(Boolean.class))); 
       will(returnValue("BLAH")); 
      } 
     }); 

我明白tmp是JMock的嘲笑的一類,它會從分配返回"BLAH"

但是,爲什麼有兩組花括號?爲什麼新的Expectations(){}?它們沒有外部定義嵌套。

這是爲什麼這樣?

+0

這只是一個帶有實例初始值設定項的匿名內部類。 – 2013-04-09 21:38:03

回答

3

這就是所謂的技術,被稱爲double-brace initialization。第一組創建一個匿名內部類,第二組執行實例初始化(與靜態初始化相反)。這允許你在這種情況下創建一個Expectations對象並在線執行一些設置工作。

+0

所以它基本上是初始化,不是靜態的? – cxdf 2013-04-09 22:11:45

+0

是的,這是正確的。 – GaryF 2013-04-09 22:21:28