1

@RunWith(SpringJUnit4ClassRunner.class) ゲッターとコンストラクター注入を使用してクラスのテストケースを作成しようとしました。@MockBeanセッター注入、@Mockコンストラクター注入、@RunWith(SpringJUnit4ClassRunner.class)およびMockitoAnnotations.initMocks(this);Bean インジェクションを使用する場合。MockitoAnnotations.initMocks(this);コンストラクターインジェクションが機能しないとコメントした場合。これで、すべての Bean が完全に注入されましたが、@Mockbeans(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()nullmockA.getValue()

4

3 に答える 3