之前用ASP.NET CORE做的項目
加了一個新功能,數據庫加了個字段balabala....
更新到服務器上,新功能測試正常,然后就沒管了.....
今天客戶說網站有BUG,某個頁面打開后出錯了,以前是正常的,上去看了下,是控制器里的代碼出異常了.....
就想到加了新功能后除了本地運行每個鏈接都點一下手工測試有沒有錯誤的,能不能全由程序來測試,於是想到了單元測試
靠搜索補了一下單元測試的基礎知識,按網上的示例跟着做,先試着寫個測試DAL增刪改方法的,
測試通過了,然后再按網上找到的文章
https://www.cnblogs.com/yubaolee/p/DotNetCoreUnitTest.html
寫測試控制器的,結果報錯:
看上面的錯誤以為是那個appsetting.json沒有COPY到單元測試項目中,copy過去后設置為始終復制,結果還是不行,后來試着在nuget里搜索安裝 microsoft.aspnetcore.server.kestrel, 安裝后再運行,然后又是另一個錯誤,同樣的是‘系統找不到指定的文件“,只是換了個包名 microsoft.aspnetcore.xxxxxx
上網又搜索了一下,看到別人說直接nuget搜索microsoft.aspnetcore.all即可,但是我試着做了,結果還是不行,原因我猜也許是因為之前的項目是用CORE 2.1來做的,而nuget里的microsoft.aspnetcore.all只有2.2版本的,
沒辦法,只能每在nuget里安裝一個包后運行一次測試,一個包一個包的裝上,最后在裝了N個包后,再測試終於測試成功通過了!!!不容易啊!!!!-_-!!!!!!!
以上寫的測試也許不對,沒有 assert什么的,但好像對我來說行了,我只需要測試控制器出不出異常就好了。。
2018年12月15日記錄
在另一個項目里加入單元測試,也是NET CORE 2.1的,結果照搬上面的代碼,結果在getservice那里<>不出來,沒有 這個擴展方法 。暈。。比較了一下二個項目的引用的包,沒發現有什么 不同,搞不明白另一個項目里新建的單元測試 怎么不能用擴展方法,都是nunit的項目 。。。
最后不用擴展方法了,用(homcontroller)webhost.host.service.getservices(typeof(homecontroller))
弄了一早上,asp.net core 單元測試 里加上session的。。
https://stackoverflow.com/questions/42269770/how-to-mock-session-variables-in-asp-net-core-unit-testing-project?answertab=active#tab-top