我正在使用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