2026年4月2日 星期四

NLog 單元測試的試煉

前陣子弄NLog,也加入了單元測試來驗證保護,針對幾種的施工技法,其中有 Moq、NSubstitute與

自訂的FakeLogger 方式,紀錄一下...



先介紹下應用程式


QueryService


Runner

Program


應用程式專案環境



nlog.config


Console 印出


檔案內容


接著是測試專案


使用 NSubstitute

使用 NSubstitute 來建立替身,有點麻煩的是 LogLevel 是擴充方法沒有實作介面,

這樣僅能透過 Log() 方法取得相關資訊,過程中要推斷各參數的路徑,例如

c.GetArguments()[2]! ,這是使用 NSubstitute 的硬傷


使用 FakeLogger(自訂)

透過實作 ILogger<T> 這樣我們在驗證時就比較輕鬆



使用 Moq

同樣類似NSubstitute 使用假物件,但因為有 It.IsAnyType 對泛型驗證(如 ILogger)更方便




範例


沒有留言:

張貼留言