Mockito kullanarak birim testleri yapıyorum ve enjekte edilen sınıflarla alay etme konusunda sorun yaşıyorum. Sorun, enjekte edilen sınıfların ikisinin aynı tip olması ve sadece @Qualifier
ek açıklamalarıyla ayırt edilmesidir. Eğer sadece SomeClass.class
ile dalga geçmeye çalıştıysam, bu sahte enjekte edilmez ve bu testlerimde o nesne null
olur. Bu nesnelerle nasıl dalga geçebilirim? Eğer ek açıklama kullanmazsanızMockito ile aynı türde iki nesneyi gezinme
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);
}
}
görünüyor:
Yani, sizin durumda, size testinde sınıfta aynı adı taşıyan alay sınıfların ikisine de sahip emin olun? Ben alaylarımı oluşturmak için her zaman açıkça "Mockito.mock (SomeClass.class)" yi çağırıyorum, ünitemden uzak durmak ek açıklamalarla sağlanan herhangi bir sihiri test eder. Bağımlılıklarınızı kurucu veya ayarlayıcılarla enjekte ederseniz, aynı şeyi yapabilmelisiniz. Durumun iyi bir nedeni var mı? – rcomblen
Bu bağımlılıkları @InjectMocks kullanılmadan enjekte etmeyi gösterebilir misiniz? Testimin nasıl kurulduğunu göstermek için Q'mı güncelledim. – tamuren