2013-04-09 42 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