2013-11-15 3 views
0

Я совершенно не знаком с JMockIt. В учебнике я вижу примеры кодов, в которых используется модификатор final для параметра @Mocked, например.В JMockIt, что является последним параметром @Mock

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

Что окончательный издевались параметр значит здесь? Иногда «final» не используется. В чем разница?

ответ

1

Это просто проблема языка Java, не связанная с самим JMockit. Для параметра метода или локальной переменной, которая будет использоваться внутри внутреннего класса (анонимно или нет), компилятор Java требует, чтобы он был объявлен как final.

0

Из JMockit учебника:

«За макет параметра, объявленным в методе испытаний, экземпляр заявленного типа будет автоматически создан JMockit и принят JUnit/TestNG тест бегун при вызове методы испытания Поэтому значение параметра никогда не будет равно нулю.

Для фиктивного поля экземпляр объявленного типа будет автоматически создан JMockit и назначен для этого поля, если это не окончательное поле. В этом случае значение должно быть создано и назначено в поле явно в тестовом коде. Это значение может быть нулевым, хотя оно отлично подходит для издевающегося класса, если идут только конструкторы и статические методы чтобы призвать его ».

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

Имейте в виду, что фиктивный параметр/поле любого аннотацию @Mocked или @Injectable.

+0

Но почему параметр * * (mock parameter! = Mock field) должен быть объявлен «окончательным»? В учебнике рассказывается только о финальном макетном поле, но я не могу найти никакого описания, связанного с окончательным параметром. – JavaMan

Смежные вопросы