Salah satu modul maven saya mengabaikan level logging saya saat menjalankan pengujian.
Di src/test/resources
saya punya 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
Saya juga mencoba application-test.properties
.
Aplikasi saya banyak mencatat, terutama saat memuat konteks. Aku mencoba logback.xml
, logback-test.xml
dan logback-spring.xml
tapi tidak ada yang membantu.
Pom saya:
<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>
Satu kelas Tes sederhana:
@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
@Autowired
private JobLauncher jobLauncher;
@Test
public void testSimpleProperties() throws Exception {
assertNotNull(jobLauncher);
}
}
Log aplikasi dalam Mode DEBUG.
Dan ya, application.properties
akan dimuat. Saya sudah mencoba membobol aplikasi dengan konfigurasi yang salah.
Terima kasih atas petunjuknya.
sumber
application.properties
diurai lebih lambat dari inisialisasi pengujian. Itulah mengapaorg.springframework.test
tidak berpengaruh pada logging pengujian awal.<logger name="org.springframework.boot" level="warn" />
dan<logger name="org.eclipse.jetty" level="warn" />
benar-benar meminimalkan kebisingan. Jika Anda menggunakan kesombongan, Anda juga bisa menambahkan<logger name="springfox" level="warn" />
. Sudah selesai dilakukan dengan baik. Semoga beruntung!logback-test.xml
file. Untuk mematikannya saya mengikuti jawaban utama dari posting StackOverflow ini - dan BAM, saya telah berhasil menyingkirkan semua pencatatan prekursor saat menjalankan tes.logback-test.xml
berfungsi seperti yang diharapkan. (+1) terima kasih<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="org.springframework" level="INFO"/> </configuration>
Sebagai perbaikan cepat, saya memasukkan
logback.xml
file dengan konten di atassrc/test/resources
dan berhasil.sumber
logback-text.xml
Untuk mengaktifkan
application.properties
kebutuhan untuk menambahkan anotasi@SpringBootTest
ke kelas pengujian, baca lebih lanjut di sini .sumber
Saya juga mencari solusi untuk itu, sementara saya menggunakan solusi berikut:
ini bukan yang terbaik tapi berhasil
@BeforeClass public static void setErrorLogging() { LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR); }
LoggingSystem
: abstraksi umum atas sistem logging.->
get
: Mendeteksi dan mengembalikan sistem logging yang digunakan. Mendukung Logback dan Java LoggingsetLogLevel
: Menyetel level logging untuk logger tertentu.Pastikan untuk mengubah tingkat log kembali untuk semua kelas pengujian lainnya.
Semoga bisa membantu Anda, selamat
sumber
Jika pengujian Anda dianotasi,
@DataJpaTest
Anda dapat menonaktifkan Hibernate SQL log off dengan:@DataJpaTest(showSql=false) public class MyTest { .. }
sumber
Coba ini:
@ContextConfiguration(classes = ApplicationImportBackend.class, initializers = ConfigFileApplicationContextInitializer.class) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles({ "test" }) public class BatchJobConfigurationTests { //... }
sumber