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.

58
demandé sur anotherGatsby 2016-02-05 23:21:28

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.

50
répondu Michael Hegner 2016-10-01 10:00:17

Pour activer l'application.propriétés besoin d'ajouter une annotation @ SpringBootTest pour tester la classe, lire la suite ici

18
répondu ksandr 2016-09-01 07:54:03
<?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.

14
répondu dnocode 2016-10-13 15:39:11

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

3
répondu Idan 2017-01-13 16:46:03

Si vos tests sont annotés avec @ DataJpaTest vous pouvez désactiver la déconnexion SQL Hibernate avec:

@DataJpaTest(showSql=false)
public class MyTest {
  ..
}
3
répondu uı6ʎɹnɯ ꞁəıuɐp 2017-06-27 12:03:00

Essayez ceci:

@ContextConfiguration(classes = ApplicationImportBackend.class, 
    initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
    //...
}
1
répondu luboskrnac 2016-02-05 21:55:12