平常我會用Visual Stuido的測試專案,寫一些自動化測試,如單元測試、整合測試等等,受測的Code中有很多地方用NLog記錄訊息,在正試的環境,會寫到資料庫,但測試時我會想把訊息輸出到每一個測試的結果中,除了節省資料庫外,也比較容易追縱錯誤訊息。
NLog設定檔
是.Net中很熱門的Log記錄,使用與設定都很簡單,這裡說明一下測試專案需要的設定檔,我的習慣是寫成獨立的檔案,不過也可以寫到web.config、app.config中
1 2 3 4 5 6 7 8 9 10 11 | 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,會跳出偵錯對話框,使得自動化測試中斷。
圖一 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輸出到測試結果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2007-10-02 檔案 "C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\master.mdf" 是壓縮檔,但不在唯讀資料庫或檔案群組中。必須解壓縮該檔案 的解決方法