Я пишу модульные тесты с использованием Mockito, и у меня возникают проблемы с издевательством над введенными классами. Проблема в том, что два из введенных классов одного типа и только дифференцированы по их аннотации @Qualifier
. Если я попытался просто высмеять SomeClass.class
, этот макет не вводится и этот объект null
в моих тестах. Как я могу издеваться над этими объектами?Стыковка двух объектов одного типа с Mockito
public class ProfileDAL {
@Inject
@Qualifier("qualifierA")
private SomeClass someClassA ;
@Inject
@Qualifier("qualifierB")
private SomeClass someClassB ;
//...various code, not important
}
@RunWith(MockitoJUnitRunner.class)
public class ProfileDALLOMImplTest {
@InjectMocks
private ProfileDALLOMImpl profileDALLOMImpl = new ProfileDALLOMImpl();
@Mock
private SomeClass someClassA;
@Mock
private SomeClass someClassB;
private SomeResult mockSomeResult = mock(SomeResult.class);
@Test
public void testSomeMethod() {
when(someClassA .getSomething(any(SomeArgment.class)).thenReturn(mockSomeResult);
Int result = profileDALLOMImpl.someTest(This isn't relevant);
}
}
Как ваш тестовый код выглядит? Я всегда явно называю 'Mockito.mock (SomeClass.class)', чтобы создавать свои макеты, сохраняя вне моих юнитов все магии, предоставляемые аннотациями. Вы должны быть в состоянии сделать то же самое, если вы вводите свои зависимости через конструктор или сеттеры. Есть ли веская причина, что это не так? – rcomblen
Не могли бы вы продемонстрировать инъекцию этих зависимостей без использования @InjectMocks? Я обновил свой Q, чтобы продемонстрировать, как настроен мой тест. – tamuren