Ich habe einen Testfall für Dao-Implementierung.
Testklasse-Code -Spring Boot Dao Test
@RunWith(SpringRunner.class)
@RestClientTest({XyzDaoImpl.class})
@TestPropertySource(locations = "classpath:application-test.properties")
public class XyzDaoTest {
@Autowired
XyzDaoImpl xyzDaoImpl;
@Test
public void testGetXyzDetails(){
assertThat(xyzDaoImpl.getXyzDetails("123", null)).isNotNull();
}
}
xyzDaoImpl.getXyzDetails Methodenimplementierung ruft ein Backend RestTemplate.
Dieser Test funktioniert gut, wenn meine Config-Klasse Code enthält -
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
aber wenn ich den Rest Vorlage Builder erstellen Timeout usw. zu setzen, schlägt fehl Test -
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setConnectTimeout(timeout)
.build();
}
Versuchte Bean mit @Profile Erstellen ("Test") Standard und @Profile ("! Test") - benutzerdefinierte Einstellung, noch Test fehlschlägt.
Fehler ist -
testException = java.lang.AssertionError: No further requests expected: HTTP POST http://... url.
@RestClientTest Pflege dieser nahm zu entfernen. Danke – chappalprasad
Wenn ich @RunClientTest wie oben für Komponententest halte, kann ich nicht mehr ApplicationContext Fehler laden.
Änderung, die ich tat, wurde unten in Setup-Methode
Server = MockRestServiceServer.createServer (neue RestTemplate());
Auch ausprobiert, einschließlich Klassen, die in XYZDaoImpl Autorisiert sind. Nach dem Hinzufügen von EnabledWebMvc bekomme ich keine Bean java.servlet.ServletContext – chappalprasad
'ServletContext' wird von @WebAppConfiguration zur Verfügung gestellt. Es wird versucht, einen zu finden, da Sie eine Komponente mit @EnableWebMvc in Ihrem Komponenten-Scan-Pfad haben. Sie können die Komponente entweder mit @EnableWebMvc ausschließen oder eine andere mit einer @ WebAppConfiguration hinzufügen. – sabertiger