Verwenden von JMockit zum Verspotten von automatisch verdrahteten Schnittstellenimplementierungen

Wir schreiben JUnit-Tests für eine Klasse, die Spring Autowiring verwendet, um eine Abhängigkeit zu injizieren, die eine Instanz einer Schnittstelle ist. Da die getestete Klasse die Abhängigkeit niemals explizit instanziiert oder in einem Konstruktor übergeben hat, scheint JMockit auch nicht verpflichtet zu sein, sie zu instanziieren.

Bis jetzt haben wir SpringRunner verwendet, um Spring Load Mock-Abhängigkeiten für uns zu haben, was funktioniert. Zwei Dinge, die uns nicht gefallen, sind: 1) Das Spring-Framework muss jedes Mal geladen und initialisiert werden, wenn die Tests ausgeführt werden, was nicht gerade schnell ist. 2) Wir sind gezwungen, explizit alle Scheinabhängigkeiten als echte Klassen zu erstellen JMockit hilft bei der Beseitigung.

Hier ist ein vereinfachtes Beispiel für das, was wir testen:

public class UnitUnderTest {

   @Autowired
   ISomeInterface someInterface;

   public void callInterfaceMethod() {

      System.out.println( "UnitUnderTest.callInterfaceMethod calling someInterface.doSomething");
      someInterface.doSomething();
   }

}

Die Frage ist also, ob es eine Möglichkeit gibt, JMockit zu veranlassen, ein Mock zu erstellensomeInterface?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage