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:
- Deberías usar
Mappers#getMapper(Class)
solo con el predeterminadocomponentModel
, de lo contrario, el asignador no se instanciará correctamente. Si está obteniendo elRuntimeException
ahí quiere decir que no se generó la clase de implementación. Asegúrate de tener una configuración correcta - Necesitas probar contra la implementación.
MainMapperImpl
y no contra la clase abstracta. - 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 {
...