Stephan Schroeder
11/01/2022, 4:16 PM@Autowired
.
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class ValidationTest(
private val restTemplate: TestRestTemplate,
) {
@LocalServerPort
private val port = 0
@Test
fun greetingShouldReturnDefaultMessage() {
Assertions.assertThat(restTemplate.getForObject("<http://localhost>:$port/", String::class.java)).contains("405")
}
...
}
Unfortunatle the constructor injection fails before the test is even entered. No ParameterResolver for TestRestTemplate can be found.
No ParameterResolver registered for parameter [org.springframework.boot.test.web.client.TestRestTemplate restTemplate] in constructor [public de.fhirvalidationserver.ValidationTest(org.springframework.boot.test.web.client.TestRestTemplate)].
org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [org.springframework.boot.test.web.client.TestRestTemplate restTemplate] in constructor [public de.fhirvalidationserver.ValidationTest(org.springframework.boot.test.web.client.TestRestTemplate)].
I assumed SpringBootTest would instanciate an instance of TestRestTemplate for me. Was that the mistake or is something else missing?Ivan Pavlov
11/01/2022, 5:32 PM@TestConstructor
?
https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#integration-testing-annotations-testconstructorStephan Schroeder
11/02/2022, 9:46 AM