当前位置 : 主页 > 网络安全 > 测试自动化 >

[小技巧]自动化测试时NLog的消息输出到测试结果中

来源:互联网 收集:自由互联 发布时间:2021-06-19
平常我会用Visual Stuido的测试项目,写一些自动化测试,如单元测试、整合测试等等,受测的Code中有很多地方用NLog记录消息,在正试的环境,会写到数据库,但测试时我会想把消息输出

平常我会用Visual Stuido的测试项目,写一些自动化测试,如单元测试、整合测试等等,受测的Code中有很多地方用NLog记录消息,在正试的环境,会写到数据库,但测试时我会想把消息输出到每一个测试的结果中,除了节省数据库外,也比较容易追纵错误消息。


平常我会用Visual Stuido的测试项目,写一些自动化测试,如单元测试、整合测试等等,受测的Code中有很多地方用NLog记录消息,在正试的环境,会写到数据库,但测试时我会想把消息输出到每一个测试的结果中,除了节省数据库外,也比较容易追纵错误消息。

NLog配置文件

是.Net中很热门的Log记录,使用与设定都很简单,这里说明一下测试项目需要的配置文件,我的习惯是写成独立的文件,不过也可以写到web.config、app.config中

 

  

  
 
   
    
   
 
   
    
   

 

注意我的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,会跳出侦错对话框,使得自动化测试中断。

图一 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在测试时比较好用。

?

文件属性

文件的属性用设成如下

?

图二 文件属性

测试

写个简单的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();
}

图3 NLog输出到测试结果

原文:大专栏  [小技巧]自动化测试时NLog的消息输出到测试结果中

网友评论