私はMockitoを使って単体テストを書いています。注入されたクラスを嘲笑するのに問題があります。問題は、注入されたクラスのうちの2つが同じ型であり、注釈によってのみ区別されることです。私が単にSomeClass.class
を模倣しようとすると、そのモックは注入されず、そのオブジェクトは私のテストではnull
です。どのように私はこれらのオブジェクトを模擬することができますか?同じタイプの2つのオブジェクトを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