以前用ASP.NET CORE作的項目html
加了一個新功能,數據庫加了個字段balabala....web
更新到服務器上,新功能測試正常,而後就沒管了.....數據庫
今天客戶說網站有BUG,某個頁面打開後出錯了,之前是正常的,上去看了下,是控制器裏的代碼出異常了.....json
就想到加了新功能後除了本地運行每一個連接都點一下手工測試有沒有錯誤的,能不能全由程序來測試,因而想到了單元測試服務器
靠搜索補了一下單元測試的基礎知識,按網上的示例跟着作,先試着寫個測試DAL增刪改方法的,session
測試經過了,而後再按網上找到的文章app
https://www.cnblogs.com/yubaolee/p/DotNetCoreUnitTest.htmlasp.net
寫測試控制器的,結果報錯:單元測試
看上面的錯誤覺得是那個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