Mockito @InjectMocks funktioniert nicht für Felder mit demselben Typ
Ich war sehr überrascht, dass das folgende einfache Codebeispiel nicht für alle Mockito-Versionen> 1.8.5 funktioniert.
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
@Mock(name = "b2")
private B b2;
@InjectMocks
private A a;
@Test
public void testInjection() throws Exception {
assertNotNull(a.b2); //fails
assertNull(a.b1); //also fails, because unexpectedly b2 mock gets injected here
}
static class A{
private B b1;
private B b2;
}
interface B{}
}
In Javadocs http: //docs.mockito.googlecode.com/hg/latest/org/mockito/InjectMocks.htm) es gibt ein Zitat:
Hinweis 1: Wenn Sie Felder mit demselben Typ (oder derselben Löschung) haben, ist es besser, alle mit @Mock-Anmerkungen versehenen Felder mit den entsprechenden Feldern zu benennen, da Mockito sonst möglicherweise verwirrt wird und keine Injektion erfolgt.
Bedeutet dies, dass ich, wenn ich mehrere Felder mit demselben Typ habe, NUR EINEN von ihnen nicht verspotten kann, sondern @ definieren sollt@Mock
zumALL Felder mit gleichem Typ? Ist es eine bekannte Einschränkung und gibt es einen Grund, warum es noch nicht behoben wurde? Es sollte unkompliziert sein, @ zuzuordne@Mock
nach Feldernamen, nicht wahr?