@RunWith(SpringJUnit4ClassRunner.class)
ゲッターとコンストラクター注入を使用してクラスのテストケースを作成しようとしました。@MockBean
セッター注入、@Mock
コンストラクター注入、@RunWith(SpringJUnit4ClassRunner.class)
およびMockitoAnnotations.initMocks(this);
Bean インジェクションを使用する場合。MockitoAnnotations.initMocks(this);
コンストラクターインジェクションが機能しないとコメントした場合。これで、すべての Bean が完全に注入されましたが、@Mock
beans(Contructor 注入された) Bean は、呼び出されたときに適切に機能しないメソッドをモックしました。
@Component
Class A{
}
@Component
Class B {
}
@Component
Class c{
}
@Component
Class D{
@Atowired
A a;
B b;
C c;
@Autowired
public D(B b,C c){
b=b;
c=c;
}
}
私のテストクラスは
@RunWith(SpringJUnit4ClassRunner.class)
Class TestClass{
@MockBean
A mockA
@Mock
B mockB
@Mock
C mockC
@InjectMocks
D mockD
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);//Without this Constructor injection not working
when(mockA.getValue()).then("StringValA");
when(mockB.getValue()).then("StringValB");
when(mockC.getValue()).then("StringValC");
}
@Test
public void testMethod(){
mock.getAllValues();// It will call all injested bean method we are mocked in @before
}
}
インジェクションは正しく機能しています。問題は、私が使用している Bean のモックされたメソッドに属してい@Mock
ます。mockB.getValue()
mockC.getValue()
null
mockA.getValue()