Integrationstest einer Spring Boot Web App mit TestNG

8

Vor kurzem haben wir unsere Anwendung mit einem Springboot integriert. Unsere Testfälle basieren auf einem Test Framework. Unsere Basistestklasse sieht folgendermaßen aus

%Vor%

Wir haben die obige Klasse definiert, um das aktive Profil einzurichten und den Anwendungskontext zu laden. Alle Integrationstestklassen erweitern BaseTestCase

Einer unserer grundlegenden Testfälle sieht wie folgt aus:

%Vor%

Wenn wir den obigen Testfall ausführen, erhalten wir die folgende Ausnahme

%Vor%

Wir verwenden Springboot Version 1.1.5.RELEASE und Testversion 6.1.1. Kann jemand Licht auf die Lösung des oben genannten Problems werfen?

    
Gowri Shankar 27.08.2014, 21:44
quelle

2 Antworten

17

Das Problem besteht darin, dass AbstractTestNGSpringContextTests standardmäßig ServletTestExecutionListener aktiviert. Dieser Listener bietet mock Servlet-API-Unterstützung für Ihre Tests. Das ist in diesem Fall nicht angebracht, da Sie einen Spring Boot-Integrationstest ausführen, bei dem der eingebettete Tomcat-Server für Sie gestartet wird und Sie eine echte ServletContext erhalten. Dies führt zu dem Fehler, den Sie sehen, wenn ServletTestExecutionListener bestätigt, dass ServletContext eine MockServletContext -Instanz ist.

Sie können das Problem beheben, indem Sie die Vererbung der Testausführungslistener von AbstractTestNGSpringContextTests deaktivieren und sie stattdessen explizit mit @TestExecutionListeners konfigurieren:

%Vor%     
Andy Wilkinson 28.08.2014, 16:44
quelle
1

Ich hatte das gleiche Problem. Überraschenderweise funktionierte das Erstellen der SpringContextLoadingTest-Klasse, das Platzieren aller Anmerkungen und das Erweitern dieser Klasse anstelle von AbstractTestNGSpringContextTests

    
Łukasz Chorąży 12.12.2016 14:12
quelle

Tags und Links