【Cs】NUnit & .NET Framework Initialization
文前言
紀錄今日辛酸史
差點放棄改去用 MSTest...
主文
心血來潮想把某 dll 拿來丟 Program.cs 測試區且測試是真的會寫入 db 的部分改用單元測試取代。
摸網路查到單元測試框架:MSTest、NUnit、xUnit
原先打算用熟悉的 xUnit,但發現他沒有支援 Framework,因此轉戰其他兩個平台。
又摸到 為什麼程式需要單元測試? - 實作篇:叡揚部落格 推薦 NUnit 且有給範例,因此決定用 NUnit。
殊不知這是悲劇的開始...
總而言之一開始
照官方要求裝
NUnit Test Generator VS2022 - Visual Studio Marketplace
版本悲劇,但其實也還好
一開始是用範本加的 NUnit3。
實際上 NUnit 選擇目標框架是沒有 Framework 的,但有摸到改動的捷徑:
然而不管怎麼嘗試都不太對勁,會一直報比如
- C# 7.3 (就是目前用的版本) 不可用 null => 好解決,把 csproj 內的 Nullable tag 砍掉就好
- 比較麻煩的是會不停的在 obj 資料夾內跑出全域用 using,但 7.3 沒有支援全域 using...
最後摸到官方文件
Adapter Installation | NUnit Docs
找出 cli 安裝才成功。
然後一樣要用前面的捷徑調整,且不會報奇怪的東西。
追記
範本的部份感謝社群陪伴討論者啾大協助:

使用 cli: dotnet new install NUnit3.DotNetNew.Template
略忘記的甚麼原因造成的問題
因為嘗試太久了有些東西記憶不深...可能得等哪天又遇到才能補上了。
執行單元測試的時候報:
System.BadImageFormatException : Could not load file or assembly 'SYS\SYS.Tests\bin\Debug\netX\SYS.exe'. Format of the executable (.exe) or library (.dll) is invalid.
小問題
執行單元測試的時候報:
這問題是掛在版本問題,降版本就好。
驗證
照著此篇
[UnitTest] NUnit 入門教學 ~ m@rcus 學習筆記
做到最後通過,就成功了!
接下來就是自己撰寫時刻了。
其他
一個有點傻的註記:
輸出類型 dll 不用切成主控台應用程式才能跑單元測試,保留是 dll 就可以了。
UPDATE LOG
115. 04/22 開篇