惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
Jina AI
Jina AI
雷峰网
雷峰网
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
美团技术团队
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
博客园 - Franky
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
量子位
IT之家
IT之家
人人都是产品经理
人人都是产品经理
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - 黃偉榮

Web Project的檔案共用小技巧 IoC的中繼器:CommonServiceLocator UTF8Encoding與BOM Temporary Post Used For Theme Detection (d4b0aefa-c88e-4957-bba7-b367d1bfa042 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 寫CodedUI時如何尋找控制項的小技巧 Visual Studio 2010 Feature Packs 2之Silverlight自動化測試 Moles - Isolation framework for .NET(假.Net)介紹 [小技巧]Entity Framework強型別Include C#仿Oracle Decode,將ValueType對應成String - 黃偉榮 - 博客园 Visual Studio 單元測試的3種Initialize與Cleanup jQuery套件-檢查頁面的欄位是否有變更 用EventLogReader查詢特殊EventLog jQuery自製Plugin-Bind事件函式時檢查有沒有Bind過 ASP.NET MVC TempData使用心得 Visual Stuiod 自訂檔案比較合并工具 小技巧:專案切換32與64位元組件 Linq小技巧:日期處理 Unit Test小技巧 : DateTime的Stub 解決TFS Build Asp.Net Mvc開啟MvcBuildViews後無法載入組件問題
[小技巧]自動化測試時NLog的訊息輸出到測試結果中
黃偉榮 · 2010-10-02 · via 博客园 - 黃偉榮

平常我會用Visual Stuido的測試專案,寫一些自動化測試,如單元測試、整合測試等等,受測的Code中有很多地方用NLog記錄訊息,在正試的環境,會寫到資料庫,但測試時我會想把訊息輸出到每一個測試的結果中,除了節省資料庫外,也比較容易追縱錯誤訊息。

NLog設定檔

image 是.Net中很熱門的Log記錄,使用與設定都很簡單,這裡說明一下測試專案需要的設定檔,我的習慣是寫成獨立的檔案,不過也可以寫到web.config、app.config中

NLog.Config
<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="debuglog" xsi:type="Console" layout="${date}: ${message}" />
  </targets>
  <rules>    
    <logger name="*" writeTo="debuglog" />
  </rules>
</nlog>

注意我的type是用Console,為什麼呢?

因為Visual Studio的測試支援將

  • System.Console
  • System.Diagnostics.Trace
  • System.Diagnostics.Debug

這三個Class在測試時,所Write的訊息都會寫到測試結果中,而為什麼不用NLog的DebugTarget或Trace Target呢,因為NLog的

Debug是用StringBuilder記錄,不會輸出到測試結果中。

Trace會輸出到測試結果中,只是NLog訊息大於Error會引發Trace.Fail,會跳出偵錯對話框,使得自動化測試中斷。

image

圖一 Trace.Fail的偵錯話框

Note:

NLog的Targets有AspNet,AspResponse,Chainsaw,ColoredConsole,Console,Database,Debug,Debugger,EventLog,File,FormControl,LogReceiverService,Mail,Memory,MessageBox,MethodCall,MSMQ,Network,NLogViewer,Null,OutputDebugString,PerfCounter,RichTextBox,Trace,WebService等25種,測試過還是Console在測試時比較好用。

檔案屬性

檔案的屬性用設成如下

 image

圖二 檔案屬性

測試

寫個簡單的Code來測測看結果吧

public class Sample {
    private static Logger logger = LogManager.GetCurrentClassLogger();

    public void Foo() {
        logger.Trace("Start");
        //================
        logger.Trace("\tDo Something");
        //================
        logger.Trace("End");
    }
}

[TestMethod]
public void FooTest()
{
    var sample = new Sample();
    sample.Foo();
}

image 

圖3 NLog輸出到測試結果