Eines meiner Maven-Module ignoriert meine Protokollierungsstufen beim Ausführen von Tests.
In habe src/test/resources
ich application.properties
:
app.name=bbsng-import-backend
app.description=Import Backend Module for Application
spring.profiles.active=test
# LOGGING
logging.level.root=error
logging.level.org.springframework.core =fatal
logging.level.org.springframework.beans=fatal
logging.level.org.springframework.context=fatal
logging.level.org.springframework.transaction=error
logging.level.org.springframework.test=error
logging.level.org.springframework.web=error
logging.level.org.hibernate=ERROR
Ich habe es auch versucht application-test.properties
.
Meine Anwendung protokolliert viel, insbesondere beim Laden des Kontexts. Ich habe versucht logback.xml
, logback-test.xml
und logback-spring.xml
doch nichts hilft.
Mein Pom:
<parent>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng-import</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>bbsng-import-backend</artifactId>
<name>bbsng-import-backend</name>
<properties>
<start-class>at.company.bbsng.dataimport.ApplicationImportBackend</start-class>
</properties>
<dependencies>
<!-- APPLICATION ... -->
<dependency>
<groupId>at.company.bbsng</groupId>
<artifactId>bbsng-app-domain</artifactId>
<scope>test</scope>
</dependency>
<!-- SPRING ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<scope>test</scope>
</dependency>
<!-- JAVAX ... -->
...
<!-- COMMONS ... -->
...
<!-- LOMBOK ... -->
...
<!-- DB -->
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${org.springframework.boot-version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Eine einfache Testklasse:
@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
@Autowired
private JobLauncher jobLauncher;
@Test
public void testSimpleProperties() throws Exception {
assertNotNull(jobLauncher);
}
}
Anwendungsprotokolle befinden sich im DEBUG-Modus.
Und ja, das application.properties
wird geladen. Ich habe bereits versucht, die Anwendung durch falsche Konfiguration zu brechen.
Vielen Dank für Hinweise.
quelle
application.properties
die Analyse später als die Testinitialisierung erfolgt. Aus diesem Grundorg.springframework.test
hat dies keine Auswirkungen auf die anfängliche Testprotokollierung.<logger name="org.springframework.boot" level="warn" />
und<logger name="org.eclipse.jetty" level="warn" />
um den Lärm wirklich zu minimieren. Wenn Sie Swagger verwenden, können Sie auch hinzufügen<logger name="springfox" level="warn" />
. Gut gemacht. Hab ein Kopfgeld!logback-test.xml
Datei hinzuzufügen, einige Protokolle von Logback selbst gesehen habe . Um diese auszuschalten, folgte ich der Hauptantwort aus diesem StackOverflow-Beitrag - und BAM, ich habe es geschafft, alle vorläufigen Protokolle beim Ausführen von Tests loszuwerden.logback-test.xml
funktioniert wie erwartet. (+1) dankeAls schnelle Lösung habe ich eine
logback.xml
Datei mit dem oben genannten Inhalt eingefügtsrc/test/resources
und es funktioniert.quelle
logback-text.xml
So aktivieren Sie
application.properties
müssen eine Anmerkung hinzufügen@SpringBootTest
zu Testklasse, lesen Sie mehr hier .quelle
Ich suche auch nach einer Lösung dafür, während ich die folgende Lösung verwende:
Das ist nicht das Beste, aber es funktioniert
LoggingSystem
: eine gemeinsame Abstraktion über Protokollierungssysteme.->
get
: Erkennen Sie das verwendete Protokollierungssystem und geben Sie es zurück. Unterstützt Logback und Java LoggingsetLogLevel
: Legt die Protokollierungsstufe für einen bestimmten Protokollierer fest.Stellen Sie sicher, dass Sie die Back-Log-Ebene für alle anderen Testklassen ändern.
Hoffe es hilft dir, viel Glück
quelle
Wenn Ihre Tests mit Anmerkungen versehen sind
@DataJpaTest
, können Sie die Hibernate SQL-Abmeldung deaktivieren mit:quelle
Versuche dies:
quelle