在JMockIt中,什么是@Mock最终参数

时间:2013-11-15 09:51:23

标签: jmockit

我对JMockIt完全不熟悉。在本教程中,我看到了对@Mocked参数使用 final 修饰符的示例代码,例如。

  @Test
   public void doSomethingHandlesSomeCheckedException(@Mocked final DependencyAbc abc) throws Exception
   {
    ...
   }

最终模拟参数在这里意味着什么?有时,不使用“最终”。有什么区别?

2 个答案:

答案 0 :(得分:1)

这只是一个Java语言问题,与JMockit本身无关。对于要在内部类(匿名或非内部)中使用的方法参数或局部变量,Java编译器要求将其声明为final

答案 1 :(得分:0)

来自JMockit教程:

“对于在测试方法中声明的模拟参数,声明类型的实例将由JMockit自动创建,并在调用测试方法时由JUnit / TestNG测试运行器传递。因此,参数值永远不会为null

对于模拟字段,声明类型的实例将由JMockit自动创建并分配给字段,除非它是最终字段。在这种情况下,应该在测试代码中显式创建一个值并将其分配给该字段。但是,这个值可以为null,如果只调用构造函数和静态方法,这对于模拟类是完全有效的。“

http://jmockit.googlecode.com/svn/trunk/www/tutorial/BehaviorBasedTesting.html#declaration

请记住,模拟参数/字段是使用@Mocked或@Injectable注释的。