2017-02-02 15 views
4

Обучаясь Mockito Я нашел два различных аннотаций @TestSubject и @InjectMocks на ссылки ниже.
@TestSubject Ref
@InjectMocks Ref

@InjectMocks аннотаций работает абсолютно нормально, как описано в руководстве, но @TestSubject не работает, а его отображаются ошибки.
Я получаю сообщение об ошибке TestSubject cannot be resolved to a type для @TestSubject аннотацию в приведенной ниже фрагменте кода, однако я сделал правильную установку (включая Junit & Mockito банку файлов в пути сборки).Разница между @TestSubject и @InjectMocks?

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.InjectMocks; 
import org.mockito.Mock; 
import org.mockito.Mockito; 
import org.mockito.runners.MockitoJUnitRunner; 

import com.infosys.junitinteg.action.MathApplication; 
import com.infosys.junitinteg.service.CalculatorService; 

@RunWith(MockitoJUnitRunner.class) 
public class MathApplicationTester { 

    // @TestSubject annotation is used to identify class which is going to use 
    // the mock object 
    @TestSubject 
    MathApplication mathApplication = new MathApplication(); 

    // @Mock annotation is used to create the mock object to be injected 
    @Mock 
    CalculatorService calcService; 

    @Test(expected = RuntimeException.class) 
    public void testAdd() { 
     // add the behavior to throw exception 
     Mockito.doThrow(new RuntimeException("Add operation not implemented")).when(calcService).add(10.0, 20.0); 

     // test the add functionality 
     Assert.assertEquals(mathApplication.add(10.0, 20.0), 30.0, 0); 
    } 
} 

У меня есть два вопроса здесь.
1. Кто-нибудь столкнулся с подобной проблемой? Если да, то в чем была основная причина и решение?
2. Если он работает нормально, то в чем разница между @TestSubject и @InjectMocks аннотациями?

+2

Я не могу найти никаких доказательств того, что эта аннотация фактически существует как часть Mockito. Учебник, на который вы ссылаетесь, даже не определяет для него инструкцию импорта. Кажется, это опечатка для меня, и это, должно быть, было «@ Spy». – Gimby

ответ

6

@TestSubject - аннотация EasyMock, которая делает то же самое, что и Mockito's @InjectMocks. Если вы используете Mockito, тогда вы должны использовать @InjectMocks.