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?
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:
Ich hatte das gleiche Problem. Überraschenderweise funktionierte das Erstellen der SpringContextLoadingTest-Klasse, das Platzieren aller Anmerkungen und das Erweitern dieser Klasse anstelle von AbstractTestNGSpringContextTests
Tags und Links spring-boot testng