Ich habe ein Spring-Projekt mit 4 typischen Quellordner - main/src
, main/resources
, test/src
und test/resources
. Wenn ich meine Anwendung ausführe, ruft Spring die Anwendungskontextdatei in main/resources
ab und wenn ich einen beliebigen Junit-Test ausführe, ruft es die application-context.xml
-Datei unter test/resources
ab. Wie holt Spring die application-context.xml
Datei passend oder ist irgendeine Config beteiligt?Spring Application Context - Haupt-und Test-Ordner
Antwort
Versuchen Sie, ein anderes Projekt mit jsf
oder mit Struts
auszuführen, sie werden auch Ressourcen aus den entsprechenden Ordnern auswählen. Es hat nichts mit dem Frühling zu tun. Es wird von Maven oder einem anderen Build-System, das Sie verwenden, sorgfältig behandelt.
main/src , main/resources , test/src , test/resources
Diese Ordner sind Standard, wenn Sie Maven oder Gradle-Projekt erstellen.
Die Anwendung teilt Spring mit, wo der Anwendungskontext ist. Web-Anwendungen tun dies, indem sie einen ContextLoaderListener in der web.xml konfigurieren. Für jeden Test, wie Ihr Anwendungskontext geladen wird, ist ein Teil der Testkonfiguration, die Annotation @ContextConfiguration gibt an, wie der Kontext von welchem Ort oder von welchen annotierten Klassen geladen wird.
Zum Beispiel, wenn ich den Test
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,
classes = MyTest.ContextConfiguration.class)
public class MyTest {
@Autowired MyStuff stuff;
static class ContextConfiguration {
@Bean public MyStuff getMyStuff() {
return new MyStuff();
}
}
}
verwendet dann MyTest die Anmerkungen im Test zu verwenden, einrichten, um zu entscheiden, was in zu injizieren, und füllt die Felder der angegebene ContextConfiguration verwenden. Es ignoriert vollständig jede XML-Konfiguration im Klassenpfad.
Der Kontextlader kann auch Speicherorte angeben, aus denen der Kontext geladen werden soll, siehe Dokumentation für org.springframework.test.context.ContextLoader.
Sie sagen nicht, welche Version von Spring Sie verwenden. Vor 3.0 Tests verwaltete Testkontexte durch Implementieren der abstrakten Methode loadContext der Klasse org.springframework.test.AbstractSpringContextTests, die Teil der Hierarchie war, die Spring-aware-Tests erweiterten.
Ich denke, es ging darum, wie junit die passenden Ressourcen auswählt, zB wenn man eine Ressource in den Testresourcen-Ordner und in den src-Ressourcenordner legt. Ja, wir werden den Klassenpfad der Konfigurationsdatei angeben, aber wie findet es den Test statt der Quelle? – Pragnani
Und versuchen Sie auch, ein Stand-alone-Maven-Projekt ohne Federrahmenarbeit zu nehmen. Und nimm eine Ressource in beide Testressourcen und src-Ressourcen auf, gib junit in dein cp ein und schreibe eine Testklasse, die diese Ressource verwendet und test, um zu sehen, welche Ressource junit wählt – Pragnani
@Pragnini: die spezifische Frage war, wie der Test welche Anwendung auswählt Kontext zu verwenden. Der Frühling überlässt es nicht dem, was auf dem Klassenpfad von maven oder der IDE steht. –
- 1. Wie verbindet man HttpServlet mit Spring Application Context in web.xml?
- 2. Konfigurieren Long-Run-Prozess mit Spring Application Context & Lmax Disruptoren
- 3. laden xml application context ioexception frühling
- 4. Spring Context Event
- 5. Spring Application Kontextinitialisierung
- 6. Switching Spring Application Context oder Impl Java-Klassen mit Maven-Profile
- 7. Führen Sie eine Methode nur beim Start des Spring Application Context aus?
- 8. Strukturierung meiner Testordner/Ansatz
- 9. So haben Sie JAXRS-Endpunkte im Testordner
- 10. Testordner nicht existiert, mit Rspec
- 11. Einrichten TSconfig mit spec/Testordner
- 12. MyFaces Context Loading Probleme
- 13. Spring Web Application Anmeldung mit Active Directory
- 14. Spring Web Application: Herunterfahren, wenn Initialisierung fehlschlägt
- 15. DispatcherServlet, Context und SpringSecurity
- 16. Java-basierte Spring Context-Konfiguration für Tests überschreiben
- 17. Spring REST: HttpMediaTypeNotSupportedException: Inhaltstyp 'application/json; charset = UTF-8'
- 18. Jersey @Context scope
- 19. Begegnung XmlBeanDefinitionStoreException beim Start Java Web Application
- 20. Wie starte ich eine Spring Boot Web Application ohne ComponentScan
- 21. Wie lade ich eine Spring Web Application auf cPanel hoch?
- 22. Spring Application Datenbank Zeile Ebene Sicherheit besten Ansatz
- 23. Meine Spring Application Integration mit Alfresco Activity Workflow
- 24. How To Spring Transaktion in zwei verschiedenen Application Server behandeln
- 25. WebSphere: JNDI Context Lookup Failure
- 26. JSR 352: Mehrere Variablen mit Step Context/Job Context übergeben?
- 27. Spring Security Context ist null beim Zugriff auf Tomcat-Anwendung ohne Schrägstrich
- 28. Warum löst <context: component-scan> Spring-Beans in einem OSGi-Fragmentpaket nicht auf?
- 29. Getting Fragment Context
- 30. Handhabung Context auf Listview
Ich betreibe keinen Maven Build, sondern laufe den Junit von Eclipse. Kümmert sich Maven hinter den Kulissen? Dies war eine bereits existierende Anwendung und wollte daher überprüfen, ob ich irgendeine Konfiguration durchführen muss, um dieses Verhalten zu erreichen, wenn ich ein neues Projekt erstelle. –
@PunterVicky Wenn Sie Ihren 'junit' ausführen, wird Ihre' junit' Bibliothek immer nach den Ressourcen im Testordner suchen, denn wenn Sie Ihren Test als 'Run as-> Junit' ausführen, benutzt Ihre ID junit aus dem Klassenpfad um Ihren zu starten Prüfung. und "Junit" wird Ressourcen von Test-Ordnern auswählen – Pragnani
Danke Pragnani !! –