Inyectando el campo privado @Autowired durante la prueba
Tengo una configuración de componentes que es esencialmente un iniciador para una aplicación. Se configura así:
@Component
public class MyLauncher {
@Autowired
MyService myService;
//other methods
}
MyService está anotado con el@Service
La anotación de primavera y se enciende automáticamente en mi clase de iniciador sin ningún problema.
Me gustaría escribir algunos casos de prueba jUnit para MyLauncher, para hacerlo comencé una clase como esta:
public class MyLauncherTest
private MyLauncher myLauncher = new MyLauncher();
@Test
public void someTest() {
}
}
¿Puedo crear un objeto simulado para MyService e inyectarlo en myLauncher en mi clase de prueba? Actualmente no tengo un getter o setter en myLauncher ya que Spring está manejando el autowiring. Si es posible, me gustaría no tener que agregar getters y setters. ¿Puedo indicarle al caso de prueba que inyecte un objeto simulado en la variable de conexión automática utilizando un@Before
¿método inicial?
Si me estoy equivocando completamente, siéntete libre de decir eso. Todavía soy nuevo en esto. Mi objetivo principal es tener solo un código Java o una anotación que ponga un objeto simulado en ese@Autowired
variable sin que tenga que escribir un método setter o tener que usar unapplicationContext-test.xml
expediente. Preferiría mantener todo para los casos de prueba en el.java
Archivo en lugar de tener que mantener el contenido de una aplicación separada solo para mis pruebas.
Estoy esperando usarMockito Para los objetos simulados. En el pasado he hecho esto usandoorg.mockito.Mockito
y creando mis objetos conMockito.mock(MyClass.class)
.