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).

Respuestas a la pregunta(6)

Su respuesta a la pregunta