Uno de mis módulos de maven ignora mis niveles de registro al ejecutar 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 lo intenté application-test.properties
.
Mi aplicación registra mucho, especialmente al cargar contexto. Probé 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 la aplicación están en modo DEBUG.
Y sí, application.properties
se cargará. Ya intenté romper la aplicación con una configuración incorrecta.
Gracias por cualquier sugerencia.
fuente
application.properties
se analiza después de la inicialización de la prueba. Es por eso queorg.springframework.test
no 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.xml
archivo. 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.xml
funciona 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.xml
archivo con el contenido anteriorsrc/test/resources
y funciona.fuente
logback-text.xml
Para habilitar la
application.properties
necesidad de agregar una anotación@SpringBootTest
a 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