Uno de mis módulos de maven ignora mis niveles de registro al ejecutar pruebas.
En src/test/resourcestengo 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
También lo intenté application-test.properties.
Mi aplicación registra mucho, especialmente al cargar contexto. Probé logback.xml, logback-test.xmly logback-spring.xmlpero nada ayuda.
Mi 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>
Una clase de prueba 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);
    }
}
Los registros de la aplicación están en modo DEBUG.
Y sí, application.propertiesse cargará. Ya intenté romper la aplicación con una configuración incorrecta.
Gracias por cualquier sugerencia.
fuente

application.propertiesse analiza después de la inicialización de la prueba. Es por eso queorg.springframework.testno tiene ningún efecto en el registro de prueba inicial.<logger name="org.springframework.boot" level="warn" />y<logger name="org.eclipse.jetty" level="warn" />realmente minimicé el ruido. Si usa swagger, también puede agregar<logger name="springfox" level="warn" />. Bien hecho. ¡Ten una recompensa!logback-test.xmlarchivo. Para desactivarlos , seguí la respuesta principal de esta publicación de StackOverflow , y BAM, me las arreglé para deshacerme de todos los registros precursores al ejecutar las pruebas.logback-test.xmlfunciona como se esperaba. (+1) gracias<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="org.springframework" level="INFO"/> </configuration>Como solución rápida, coloco el
logback.xmlarchivo con el contenido anteriorsrc/test/resourcesy funciona.fuente
logback-text.xmlPara habilitar la
application.propertiesnecesidad de agregar una anotación@SpringBootTesta la clase de prueba, lea más aquí .fuente
También estoy buscando una solución para eso, mientras tanto estoy usando la siguiente solución:
esto no es lo mejor pero funciona
@BeforeClass public static void setErrorLogging() { LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR); }LoggingSystem: una abstracción común sobre los sistemas de registro.->
get: Detecta y devuelve el sistema de registro en uso. Admite Logback y Java LoggingsetLogLevel: Establece el nivel de registro para un registrador determinado.Asegúrese de cambiar el nivel de registro anterior para todas las demás clases de prueba.
Espero que te ayude, buena suerte
fuente
Si sus pruebas están anotadas con
@DataJpaTest, puede desactivar el cierre de sesión de Hibernate SQL con:@DataJpaTest(showSql=false) public class MyTest { .. }fuente
Prueba esto:
@ContextConfiguration(classes = ApplicationImportBackend.class, initializers = ConfigFileApplicationContextInitializer.class) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles({ "test" }) public class BatchJobConfigurationTests { //... }fuente