Un de mes modules maven ignore mes niveaux de journalisation lors de l'exécution de tests.
Dans src/test/resources
j'ai 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
J'ai aussi essayé application-test.properties
.
Mon application enregistre beaucoup, en particulier lors du chargement du contexte. J'ai essayé logback.xml
, logback-test.xml
et logback-spring.xml
mais rien aide.
Mon 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>
Une classe de test simple:
@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
@Autowired
private JobLauncher jobLauncher;
@Test
public void testSimpleProperties() throws Exception {
assertNotNull(jobLauncher);
}
}
Les journaux d'application sont en mode DEBUG.
Et oui, le application.properties
sera chargé. J'ai déjà essayé de casser l'application par une mauvaise configuration.
Merci pour tous les indices.
la source
application.properties
est analysée plus tard que l'initialisation du test. C'est pourquoiorg.springframework.test
n'a aucun effet sur la journalisation initiale des tests.<logger name="org.springframework.boot" level="warn" />
et<logger name="org.eclipse.jetty" level="warn" />
pour vraiment minimiser le bruit. Si vous utilisez swagger, vous pouvez également ajouter<logger name="springfox" level="warn" />
. Bien joué. Ayez une prime!logback-test.xml
fichier. Pour les désactiver, j'ai suivi la réponse principale de ce post StackOverflow - et BAM, j'ai réussi à me débarrasser de toute la journalisation précurseur lors de l'exécution des tests.logback-test.xml
fonctionne comme prévu. (+1) merci<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="org.springframework" level="INFO"/> </configuration>
En guise de solution rapide, j'ai mis un
logback.xml
fichier avec le contenu ci-dessussrc/test/resources
et cela fonctionne.la source
logback-text.xml
Pour activer l'
application.properties
ajout d'une annotation@SpringBootTest
à la classe de test, lisez plus ici .la source
Je cherche également une solution à cela, en attendant j'utilise la solution suivante:
ce n'est pas le meilleur mais ça marche
@BeforeClass public static void setErrorLogging() { LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR); }
LoggingSystem
: une abstraction commune sur les systèmes de journalisation.->
get
: Détecte et renvoie le système de journalisation utilisé. Prend en charge Logback et Java LoggingsetLogLevel
: Définit le niveau de journalisation pour un enregistreur donné.Assurez-vous de modifier le niveau de journalisation pour toutes les autres classes de test.
J'espère que ça vous aide, bonne chance
la source
Si vos tests sont annotés avec,
@DataJpaTest
vous pouvez désactiver la déconnexion d'Hibernate SQL avec:@DataJpaTest(showSql=false) public class MyTest { .. }
la source
Essaye ça:
@ContextConfiguration(classes = ApplicationImportBackend.class, initializers = ConfigFileApplicationContextInitializer.class) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles({ "test" }) public class BatchJobConfigurationTests { //... }
la source