Was ist der beste Weg, um zu injizieren, verspottet Spring @Autowired Abhängigkeiten von einem unit test?

import org.springframework.beans.factory.annotation.Autowired;

class MyService {
  @Autowired private DependencyOne dependencyOne;
  @Autowired private DependencyTwo dependencyTwo;

  public void doSomething(){
    //Does something with dependencies
  }
}

Beim testen dieser Klasse, die ich im wesentlichen vier Möglichkeiten, um zu injizieren, mock Abhängigkeiten:

  1. Verwendung von Spring ReflectionTestUtils im test zu injizieren der Abhängigkeiten
  2. Fügen Sie einen Konstruktor hinzu MyService
  3. Hinzufügen setter-Methoden zu MyService
  4. Entspannen die Abhängigkeit Sichtbarkeit package-protected, und legen Sie die Felder direkt

Welche ist die beste und warum?

- - - - UPDATE ---

Ich denke, ich hätte ein wenig klarer - ich spreche hier nur über "Einheit" - Stil-tests, nicht Frühling "integration" style tests, in denen die Abhängigkeiten können so verdrahtet werden, mit einem Spring-Kontext.

Schreibe einen Kommentar