Spring Boot Test ignore la journalisation.niveau
Un de mes modules maven ignore mes niveaux de journalisation lors de l'exécution de tests.
Dans src / test / resources j'ai une application.propriétés:
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.propriété.
Mon Application se connecte beaucoup, surtout lors du chargement du contexte. J'ai essayé logback.xml, logback-test.xml et logback-printemps.xml mais rien n'aide.
Mon pompon:
<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 débogage.
Et oui, le application.les propriétés seront chargées. J'ai déjà essayé de casser l'application par une mauvaise configuration.
Merci pour tous les conseils.
6 réponses
OK ce que j'ai fait maintenant, dans tous les modules que j'ai configurés comme suit:
Src/main/resources:
J'utilise la configuration de journalisation dans l'application.properies comme l'exploitation forestière.niveau.* comme descrbed en question.
Src/test/resources:
J'utilise logback-test.xml comme:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="*.myapp" level="error" />
<logger name="org.springframework.core " level="error" />
<logger name="org.springframework.beans" level="error" />
<logger name="org.springframework.context" level="error" />
<logger name="org.springframework.transaction" level="error" />
<logger name="org.springframework.web" level="error" />
<logger name="org.springframework.test" level="error" />
<logger name="org.hibernate" level="error" />
</configuration>
Mais je ne comprends toujours pas, pourquoi dans quelques modules je pourrais utiliser l'application.propriétés, mais dans un autre module, il ignore ... Mais pour l'instant, cela fonctionne pour moi tel quel.
, Mais peut-être quelques conseils avec des connaissances de base sont toujours les bienvenus.
Je ne marque pas ma réponse comme solution, car cela ressemble toujours à une solution de contournement.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework" level="INFO"/>
</configuration>
Comme une solution rapide, je mets logback.fichier xml avec le contenu ci-dessus dans src/test/resources et il fonctionne.
Je cherche aussi 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étecter et renvoyer le système de journalisation en cours d'utilisation. Prend en charge la journalisation et la journalisation Java
setLogLevel
:
Définit le niveau de journalisation pour un enregistreur.
Assurez-vous de changer le niveau du journal pour toutes les autres classes de test.
J'espère que cela vous aidera, goodluck
Si vos tests sont annotés avec @ DataJpaTest vous pouvez désactiver la déconnexion SQL Hibernate avec:
@DataJpaTest(showSql=false)
public class MyTest {
..
}
Essayez ceci:
@ContextConfiguration(classes = ApplicationImportBackend.class,
initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
//...
}