Spring Boot Test: bean no ha sido inyectado.
Aquí está mi ubicación de prueba:
src/test/java
└── cat
└── gencat
└── catsalut
└── hes
└── mpi
└── unit
└── mapper
└── PatientMapperTest.java
PatientMapperTest.java
es:
@SpringBootTest
@RequiredArgsConstructor
public class Patient {
private final TypesMapper typesMapper;
@Test
void test() {
assertNull(this.typesMapper);
}
}
También he probado este código (eliminando la anotación de Lombok e inicializando explícitamente el campo typesMapper
):
@SpringBootTest
public class PatientMapperTest {
private final TypesMapper typesMapper;
public PatientMapperTest(TypesMapper typesMapper) {
this.typesMapper = new TypesMapperImpl();
}
@Test
void test() {
assertNull(this.typesMapper);
}
}
Sin embargo, se comporta exactamente igual que antes.
No obstante, cuando ejecuto mvn test
, parece ser ignorado:
$ mvn test
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] PatientMapperTest.test » ParameterResolution No ParameterResolver registered f...
[INFO]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
Dependencia del pom relacionada:
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>2.5.5</version>
<relativepath></relativepath> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
¿Alguna idea?
davy.ai
El mensaje de error sugiere que JUnit 5 no puede encontrar un ParameterResolver para la inyección de dependencia
TypesMapper
enPatientMapperTest
.Para resolver esto, puedes configurar JUnit 5 para que use la Extensión de Spring y así proporcionar soporte para inyectar beans de Spring en tus clases de prueba.
Agrega la siguiente anotación a tu clase de prueba:
Luego, anota el campo
typesMapper
con@Autowired
:Esto le indica a Spring que inyecte el bean
TypesMapper
en la clase de prueba. Ten en cuenta que ya no necesitas la anotación@SpringBootTest
.Tu clase de prueba actualizada debería lucir así:
Con este cambio, se usará la Extensión de Spring de JUnit 5 para resolver la dependencia
TypesMapper
y tu prueba debería ejecutarse correctamente.