Saltar al contenido

Cómo escribir la prueba Junit para mapstruct abstract mapper inyectado a través de Spring

Es fundamental interpretar el código bien previamente a adaptarlo a tu trabajo si ttienes algo que aportar puedes dejarlo en la sección de comentarios.

Solución:

En respuesta al comentario de @Richard Lewan, así es como declaré mi clase de prueba para la clase abstracta ConfigurationMapper usando 2 subMappers

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ConfigurationMapperImpl.class, SubMapper1Impl.class, SubMapper2Impl.class)
public class ConfigurationMapperTest {

usas el Impl Clases generadas en el SpringBootTest anotación y luego inyectar la clase que desea probar:

@Autowired
private ConfigurationMapper configurationMapper;

Avíseme si necesita más información, pero a partir de ahí es sencillo. No me burlé del subMapper, ya que era mejor para mí probar todo el proceso de mapeo a la vez.

Tienes varios problemas:

  1. Deberías usar Mappers#getMapper(Class) solo con el predeterminado componentModel, de lo contrario, el asignador no se instanciará correctamente. Si está obteniendo el RuntimeException ahí quiere decir que no se generó la clase de implementación. Asegúrate de tener una configuración correcta
  2. Necesitas probar contra la implementación. MainMapperImpl y no contra la clase abstracta.
  3. Si desea probar con el frijol de primavera, debe usar el correcto ComponentScan y asegúrese de que la implementación y los mapeadores utilizados puedan conectarse automáticamente.

La clase que vinculó es una clase de prueba incorrecta y no está relacionada con su caso de prueba. Eche un vistazo a este caso de prueba de integración para Spring Integration.

El AnnotationProcessorTestRunner es parte de nuestras pruebas y se usa para probar el procesador de anotaciones y ha estado allí desde el principio. No es parte de los lanzamientos.

Adición a la respuesta de @ TheBakker: como una alternativa más ligera a @SpringBootTest puedes usar @ContextConfiguration, si no necesita toda la pila SpringBoot. Su ejemplo se vería así:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = 
            ConfigurationMapperImpl.class,
            SubMapper1Impl.class,
            SubMapper2Impl.class)
public class ConfigurationMapperTest {
...

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *