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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage