J'ai une configuration de composant qui est essentiellement un lanceur pour une application. Il est configuré de la manière suivante :
@Component
public class MyLauncher {
@Autowired
MyService myService;
//other methods
}
MyService est annoté avec la balise @Service
Spring et s'intègre automatiquement dans ma classe de lancement sans aucun problème.
Je voudrais écrire quelques cas de test jUnit pour MyLauncher, pour ce faire j'ai commencé une classe comme ceci :
public class MyLauncherTest
private MyLauncher myLauncher = new MyLauncher();
@Test
public void someTest() {
}
}
Puis-je créer un objet Mock pour MyService et l'injecter dans myLauncher dans ma classe de test ? Actuellement, je n'ai pas de getter ou setter dans myLauncher car Spring gère l'auto-câblage. Si possible, j'aimerais ne pas avoir à ajouter de getters et setters. Puis-je dire au scénario de test d'injecter un objet fantaisie dans la variable autowired en utilisant une balise @Before
méthode d'init ?
Si je m'y prends mal, n'hésitez pas à le dire. Je suis encore novice en la matière. Mon objectif principal est de disposer d'un code Java ou d'une annotation qui place un objet fantaisie dans l'environnement de travail. @Autowired
sans que je doive écrire une méthode de paramétrage ou utiliser une méthode de type applicationContext-test.xml
fichier. Je préfère de loin maintenir tout ce qui concerne les scénarios de test dans le fichier .java
au lieu de devoir maintenir un contenu d'application séparé juste pour mes tests.
J'espère utiliser Mockito pour les objets fantaisie. Dans le passé, j'ai fait cela en utilisant org.mockito.Mockito
et en créant mes objets avec Mockito.mock(MyClass.class)
.