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