Haben Sie ein sehr leichtes Spring Boot 1.4 Projekt, generiert von start.spring.io.Spring Boot 1.4 - TestRestTemplate Nicht befriedigte Abhängigkeit Ausnahme
Der Versuch, einen Integrationstest für @RestController
mit @RequestBody
unter Verwendung von TestRestTemplate
auszuführen, aber es gibt keinen Erfolg wegen einer Startausnahme.
Die einzige Konfigurationsklasse:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Konfigurationsdatei application.properties
hat fast nichts außer security.ignored=/**
für die Testzwecke.
Die Testklasse:
@RunWith(SpringRunner.class)
@SpringBootTest
@DataJpaTest
public class MyControllerTest {
private Logger log = Logger.getLogger(getClass());
@Autowired
private TestRestTemplate restTemplate;
@Autowired
private TestEntityManager entityManager;
@Before
public void init() {
log.info("Initializing...");
}
@Test
public void addTest() throws Exception {
log.info("MyController add test starting...");
// restTemplate usage
log.info("MyController add test passed");
}
}
... aber während der Teststart ich die folgende Ausnahme erhalten:
ERROR 6504 --- [ main] o.s.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.b[email protected]5444f1c3] to prepare test instance [[email protected]]
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.myproject.controllers.MyControllerTest': Unsatisfied dependency expressed through field 'restTemplate': No qualifying bean of type [org.springframework.boot.test.web.client.TestRestTemplate] found for dependency [org.springframework.boot.test.web.client.TestRestTemplate]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.boot.test.web.client.TestRestTemplate] found for dependency [org.springframework.boot.test.web.client.TestRestTemplate]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
Nach dem doc ist es nicht erforderlich TestRestTemplate
überall zu konfigurieren. Ich habe jedoch den neuen Apache Http Client wie empfohlen zum Classpath hinzugefügt.
Was habe ich verpasst?
haben gerade gefunden '@ AutoConfigureTestDatabase' Anmerkung in Verbindung verwendet werden soll, mit' @ SpringBootTest' statt '@ DataJpaTest' im Fall so was – WildDev