Ich habe eine Web-Anwendung im Spring-Boot erstellt. Ich schreibe eine Unit-Tests mit testNG für meine Business-Schicht.
Ich habe die Anwendungsklasse
erstellt %Vor%Meine Testklassen sehen wie
aus %Vor%Wenn ich ein Projekt starte, wird die hugh log on console angezeigt und es dauert Zeiten von 20,00 Sekunden für einige kleine Tests. Einige der Anweisungen aus dem Protokoll sind
DEBUG o.s.c.i.s.PathMatchingResourcePatternResolver - Verzeichnis suchen DEBUG o.s.c.a.ConfigurationClassPostProcessor DEBUG o.s.c.a.ClassPathBeanDefinitionScanner DEBUG o.s.c.i.s.PathMatchingResourcePatternResolver DEBUG o.s.f.s.DefaultListableBeanFactory DEBUG o.a.c.b.converters.ArrayConverter DEBUG org.dozer.loader.xml.XMLParser DEBUG org.hibernate.cfg.SettingsFactory DEBUG o.h.cfg.annotations.CollectionBinder DEBUG o.h.cfg.annotations.TableBinder DEBUG o.h.p.w.spi.MetamodelGraphWalker - Besuchsattributpfad: MyEntity DEBUG o.s.f.s.DefaultListableBeanFactory DEBUG org.hibernate.SQL
Warum braucht es so viel Zeit? Was muss ich tun?
Die Untersuchung:
Die Annotation @SpringBootApplication
entspricht den folgenden Annotationen mit Standardattributen:
@Configuration
- Gibt an, dass die Klasse eine oder mehrere Methoden @Bean
enthält. Spielt zusammen mit @ComponentScan
.
@EnableAutoConfiguration
- Wird versuchen, Beans zu erraten und zu konfigurieren, die Sie wahrscheinlich benötigen. Dies kann je nach Anwendung zu Leistungseinbußen führen.
@ComponentScan
- Konfiguriert das Scannen von Komponenten. Da das Paket nicht definiert ist, erfolgt das Scannen aus dem Paket der Klasse mit dieser Anmerkung. Ohne weiteren Code ist es nicht möglich, Ihnen eine genaue Schätzung zu geben, aber ich denke, dass die meisten Leistungseinbußen durch die Spring Boot-Initialisierung verursacht werden .
Standardmäßig ist der Logging-Level im Spring Boot auf INFO gesetzt, wahrscheinlich haben Sie das geändert? Fügen Sie dies application.properties oder einer anderen benötigten Ebene hinzu (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF)
logging.level.root = WARN
Wie bereits erwähnt, kann die automatische Konfiguration die Leistung beeinträchtigen. Sie können mit dem Ausschließen einiger Konfigurationen spielen, die Sie nicht benötigen. Hier ist ein Beispiel (zufällige Menge - folgen Sie nicht blind)
%Vor%für Testklassen würde ich empfehlen,
zu verwenden %Vor%Sie können Tomcat auch ausschließen, wenn Sie es in Ihren Tests nicht benötigen
%Vor%und versuchen Sie uns mehr Details zu geben
Tags und Links java performance spring-boot testng