org - Spring Boot Test ignora logging.level
spring boot logging mkyong (6)
Bien, lo que hice ahora, en todos los módulos que configuré de la siguiente manera:
src / main / resources:
Utilizo la configuración de registro en application.properies como logging.level. * Como se describe en la pregunta.
src / prueba / recursos:
Yo uso logback-test.xml como:
<?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>
Pero todavía no entiendo por qué en pocos módulos podría usar application.properties, pero en otro módulo ignora ... Pero por ahora funciona para mí tal como está.
Pero tal vez algunas sugerencias con conocimientos previos sean bienvenidas.
No marco mi respuesta como solución, porque todavía parece una solución.
Uno de mis módulos maven ignora mis niveles de registro cuando ejecuto pruebas.
En src / test / resources tengo 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 probé application-test.properties.
Mi aplicación registra mucho, especialmente al cargar contexto. Intenté logback.xml, logback-test.xml y logback-spring.xml pero 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 aplicaciones están en modo DEPURACIÓN.
Y sí, se cargarán las application.properties. Ya intenté romper la aplicación por configuración incorrecta.
Gracias por cualquier pista.
Para habilitar application.properties necesita agregar una anotación @SpringBootTest para probar la clase, lea más here
Prueba esto:
@ContextConfiguration(classes = ApplicationImportBackend.class,
initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
//...
}
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 {
..
}
También estoy buscando una solución para eso, mientras tanto estoy usando la siguiente solución:
este no es el 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 Logging
setLogLevel
: establece el nivel de registro para un registrador dado.
Asegúrese de volver a cambiar el nivel de registro para todas las demás clases de prueba.
Espero que te ayude, buena suerte
<?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, puse el archivo logback.xml con el contenido anterior en src / test / resources y funciona.