Das Ausführen der Spring Boot-Anwendung über Eclipse nimmt Testklassen auf

8

Ich entwickle eine Spring-Boot-Anwendung mit STS mit dem Gradle-Plugin. Ich habe eine andere Konfiguration für Tests, um zu verhindern, dass unsere Selenium-Tests sich anmelden müssen.

Also in src/test/java/etc habe ich so etwas:

%Vor%

In src/main/java habe ich eine entsprechende Klasse, die den Login usw. konfiguriert und für alle Seiten eine Anmeldung erfordert.

Wenn ich die Anwendung über das Gradle-Plugin (bootRun) laufe, funktioniert alles einwandfrei.

Wenn ich es jedoch direkt über Eclipse ausführen oder debuggen möchte (z. B. mit der rechten Maustaste auf das Projekt, Ausführen als Start- & gt; Spring Boot App oder durch Klicken auf die Run / Debug-Schaltflächen in der Spring- oder Java-Ansicht), dann wird die Testkonfiguration angewendet, so dass der Zugriff auf alle Seiten ohne Anmeldung gewährt wird.

Ich vermute, dass die Testklassen in den Klassenpfad aufgenommen werden, wenn ich die Anwendung auf diese Weise starte. Gibt es einen einfachen Weg, dies zu verhindern?

    
Martin Wilson 14.11.2015, 11:23
quelle

2 Antworten

2

Wenn Sie den Test von Eclipse ausführen, wird der Klassenpfad von Eclipse (und nicht von Maven oder Gradle) vorbereitet.

Eclipse verwendet nur einen Klassenpfad pro Projekt und weiß nichts über Abhängigkeitsbereiche (wie 'kompilieren' oder 'testen'). Daher enthält der Klassenpfad immer Ressourcen eines referenzierten Projekts.

Sie können dieses Verhalten der Sonnenfinsternis nicht ändern. Sie müssen Namenskonventionen, Profile usw. verwenden, um eine versehentliche Verwendung von Testressourcen zu vermeiden.

    
quelle
0

Sie können @TestComponent an Ihre Testkonfigurationsklasse anhängen. Diese Bean-Konfigurationen werden beim Komponentenscan Ihrer Anwendung übersprungen. Abhängig von der Komponentenscankonfiguration müssen Sie einen @ ComponentScan-Ausschlussfilter definieren: excludeFilters = @ComponentScan.Filter(value = TestComponent.class, type = FilterType.ANNOTATION))

    
StefanR 21.07.2017 13:37
quelle