2

在 JUNIT 测试中,我使用的是 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(){}?它们是嵌套的,没有外部定义。

为什么会这样?

4

1 回答 1

4

这称为一种称为双括号初始化的技术。第一组创建一个匿名内部类,第二组执行实例初始化(相对于静态初始化)。在这种情况下,这允许您创建一个 Expectations 对象并在线进行一些设置工作。

于 2013-04-09T21:36:29.477 回答