相對於傳統的Unit Test,VS2017 帶來了一個新的功能,叫Live Unit Testing,從字面意思理解就是實時單元測試,在實際的使用中,這個功能就是可以在編寫代碼的時候進行實時的background的單元測試.
在體驗之前,有幾點注意事項是需要了解的:
1.目前 live unit tesing僅僅支持 C#和VB的傳統.net版本,不支持.net core,當然,我覺得也不支持其他的語言,這點是暫時讓我遺憾的,因為從體驗的結果來看,如果能支持其他的語言,無疑是非常非常吸引人的功能.
2.可以和第三方的測試框架結合,不僅僅是MSTEST,我就是用的NUnit,當然XUnit也沒有問題.
要想啟用測試,本身來講是非常簡單的.
只需要在Test 菜單 啟用Live Unit Testing就可以了.
如果你使用NUnit的話,需要安裝Nunit test adpater Install-Package NUnite3TestAdapter
測試的過程就比較簡單了.
我們可以按照我們的需要,寫一些需要測試的內容,然后創建TestMethod,就可以進行測試,與傳統測試不同的是,所有的單元測試,不需要手工觸發,可以自動進行.
public class Item
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class ShoppingCart
{
public int UserID { get; set; }
public string UserName { get; set; }
public DateTime LastUpdated { get; set; }
public List<Item> Items { get; set; }
public decimal Total { get { return Items.Sum(i => i.Price); } }
}
然后我們可以創建一個測試的類,並編寫測試的方法.
在我們的編寫過程中,啟動了Live Unit Testing的VS2017 會幫我們進行持續的測試,並根據測試的結果,標注在每一行中.
同樣,針對已經完成了單元測試的代碼,也會進行實時的標記,如下圖所示:
這樣,我們可以很清楚的看到整個代碼的測試覆蓋情況.
而且在整個編碼過程中,我們完全不需要停止測試的過程,只要我們進行編碼,隨時都會進行測試,並顯示代碼測試的覆蓋情況,而且會立即顯示代碼的錯誤.
例如:
我們保存以后,馬上就有提示,然后緊接着會進行單元測試.然后實時的顯示測試失敗的情況,如下圖:
而且這個錯誤會同時顯示在我們的TestMethod和我們的代碼編寫中,可以想見,這樣的方式,將會極大的提升我們編寫代碼的效率.
但是這樣也帶來了一個問題,在我們寫代碼的過程中,可能不希望所有的單元測試都是這樣實時的進行的,這個時候,我們可以簡單的進行單個測試文件的排除:
只要在Explorer里面,選擇不希望包含的類,直接在右鍵菜單里面排除就行了.