Spring Boot Test игнорирует ведение журнала.уровень



один из моих модулей maven игнорирует мои уровни ведения журнала при выполнении тестов.



в src / test / resources у меня есть приложение.свойства:



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


Я также попробовал приложение-тест.свойства.



мое приложение регистрирует много, особенно при загрузке контекста. Я попробовал войти в систему.xml, logback-тест.xml и logback-весна.XML, но ничего не помогает.



мой пом:



<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>


один простой тестовый класс:



@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {

@Autowired
private JobLauncher jobLauncher;

@Test
public void testSimpleProperties() throws Exception {
assertNotNull(jobLauncher);
}

}


журналы приложений в режиме отладки.



и да, приложение.свойства будут загружены. Я уже пытался сломать приложение с помощью неправильной конфигурации.



Спасибо за любые подсказки.

670   6  

6 ответов:

хорошо, что я сделал сейчас, во всех модулях я настроил следующим образом:

src / main / resources:
Я использую конфигурацию ведения журнала в приложении.свойства, как лесозаготовки.уровень.* как описано в вопросе.

src / test / resources:
Я использую logback-тест.xml как:

<?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>

но я до сих пор не понимаю, почему в нескольких модулях я мог бы использовать приложение.свойства, но в другом модуле, он игнорирует ... Но сейчас это работает для меня так оно и есть.

но, возможно, несколько подсказок с фоновыми знаниями все еще приветствуются.

Я не отмечаю свой ответ как решение, потому что это все еще похоже на обходной путь.

включить приложения.свойства необходимо добавить аннотацию @SpringBootTest для тестирования класса, подробнее здесь

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework" level="INFO"/>
</configuration>

как быстрое исправление, я поставил logback.xml-файл с вышеуказанным содержимым в src / test / resources, и он работает.

Я также ищу решение для этого, между тем я использую следующее решение:

это не самое лучшее, но это работает

@BeforeClass
public static void setErrorLogging() {
   LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR);
}

LoggingSystem: общая абстракция над системами регистрации.

->

get: обнаружение и возврат используемой системы регистрации. Поддерживает Logback и Java Logging

setLogLevel: Задает уровень ведения журнала для данного регистратора.

убедитесь в том, чтобы изменить уровень ведения журнала для всех остальных тестов занятия.

надеюсь, что это поможет вам, goodluck

Если ваши тесты аннотируются @DataJpaTest вы можете отключить выход Hibernate SQL с помощью:

@DataJpaTest(showSql=false)
public class MyTest {
  ..
}

попробуйте это:

@ContextConfiguration(classes = ApplicationImportBackend.class, 
    initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
    //...
}

Comments

    Ничего не найдено.