教程:测试期间的日志记录
日志記錄是一種流行的解決方案,用于顯示軟件在運(yùn)行時的運(yùn)行狀況。
但是,當(dāng)我們使用jUnit / TestNG對應(yīng)用程序進(jìn)行單元測試時,日志記錄會怎樣?
在自動化測試執(zhí)行期間,我們通常不希望看到日志記錄消息,因為我們的主要興趣是測試結(jié)果。
能夠在標(biāo)準(zhǔn)的自動測試過程中禁用日志記錄消息將是很好的。
相反,在某些情況下,日志記錄消息在測試時可能有用。 一個典型的例子是,當(dāng)我們?yōu)槟承┻z留代碼編寫缺少的測試代碼時,在適當(dāng)覆蓋測試范圍之前,我們不想碰。 在這種情況下,在控制臺上記錄消息可以幫助我們理解代碼及其工作方式。
因此,我們可以確定三個用例:
讓我們看一個基于Maven和SLF4J的示例, SLF4J是流行的日志記錄外觀。
- 完整的項目可以在這里找到。
項目pom.xml中的典型SLF4J配置如下:
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version><scope>runtime</scope></dependency>所述slf4-api依賴是主要的SLF4J庫,而第二個, slf4j-log4j12 ,所引用的可能記錄的發(fā)動機(jī)(之一LOG4J ),其可工作SLF4J 下方 。
這是運(yùn)行模式配置。 在此示例中,項目資源將包含一個LOG4J屬性文件,該文件指示LOG4J應(yīng)該記錄什么,如何記錄以及在哪里記錄。
當(dāng)我們使用不同的日志記錄引擎(如java.util.logging(JDK)和Logback)時,也會發(fā)生相同的情況。 有關(guān)更多詳細(xì)信息,請參見Slf4J手冊 。
在測試執(zhí)行模式下,我們不想記錄日志,因此我們可以簡單地添加以下范圍測試依賴項
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>${slf4j.version}</version><scope>test</scope></dependency>NOP記錄器(slf4j-nop)只是丟棄所有記錄。
重要提示 : pom.xml的依賴關(guān)系順序很重要。 將slf4j-nop依賴項放在slf4-api依賴項之后,這樣就可以在測試期間使用它,即使該依賴項中還有另一個日志記錄引擎。
當(dāng)pom.xml有多個日志記錄引擎依賴項時,無論如何SLF4J都會顯示如下消息:
SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:.m2/repository/org/slf4j/slf4j-nop/1.7.12/slf4j-nop-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:.m2/repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]總而言之,下面是一個完整的配置示例:
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>${slf4j.version}</version><scope>test</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version><scope>runtime</scope></dependency>同樣,應(yīng)該調(diào)整最后一個依賴項以匹配所需的日志記錄引擎。
如前所述,創(chuàng)建新測試時日志記錄很有用。 在這種情況下( 測試創(chuàng)建模式 ),我們可以用slf4j-simple依賴項臨時替換slf4j-nop ,這將啟用SLF4J Simple logger 。
現(xiàn)在,在執(zhí)行測試期間,日志消息將作為System.err消息顯示在控制臺窗口中。 不需要配置文件。
默認(rèn)情況下,簡單記錄器不會記錄DEBUG消息。 標(biāo)準(zhǔn)日志記錄級別為INFO。
您可以使用此處記錄的系統(tǒng)變量來自定義Simple logger行為。
定義簡單記錄器配置的明智方法是使用[Surefire插件配置部分]( http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html ):
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.18.1</version><configuration><systemPropertyVariables><org.slf4j.simpleLogger.defaultLogLevel>DEBUG</org.slf4j.simpleLogger.defaultLogLevel><org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime></systemPropertyVariables></configuration></plugin></plugins></build>在systemPropertyVariables部分中,我們可以使用Simple logger變量名稱創(chuàng)建標(biāo)簽。 在上面的示例中,啟用了DEBUG和時間戳記錄。
翻譯自: https://www.javacodegeeks.com/2015/11/tutorial-logging-tests.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的教程:测试期间的日志记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter负载测试测试_Apache
- 下一篇: zbg行情api