我正在使用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)'來創建我的模擬,從而不用我的單元測試通過註釋提供的任何魔法。如果通過構造函數或setter方法注入依賴關係,您應該也可以這樣做。是不是有很好的理由? – rcomblen 2013-03-18 19:41:41
您可以證明在不使用@InjectMocks的情況下注入這些依賴關係嗎?我更新了我的Q來演示我的測試是如何建立的。 – tamuren 2013-03-18 20:04:35