昨天簡單的看了下Visual Studio2012的單元測試功能,其變化還是非常大的,其主要特點如下:
支持第三方單元測試框架集成
Visual Studio 2012現在可以在IDE中支持對第三方單元測試框架集成,只需要在 Visual Studio Gallery 下載相應的擴展即可。

集成后統一后的測試界面更加整潔,並且第三方測試框架也可以使用VisualStudio中的提供的功能(代碼覆蓋率,測試策略等)了。目前支持的一些第三方測試框架為:
-
NUnit
-
xUnit.net
-
MbUnit
-
QUnit
-
Jasmine
測試策略
支持一些常用的測試策略:
-
生成后運行測試
-
只運行為通過的用例
-
優先測試關鍵用例
對失敗的測試用例調試
可以查看測試用例的代碼覆蓋率,這個以前其實也有,但現在和第三方測試框架集成后就更加方便了。
查看代碼覆蓋率

支持對C++代碼測試
現在MS-Test直接支持對C++本地代碼測試了,關於其測試方法請參看MSDN文章:Unit testing native code with Test Explorer,其完整示例可以參看下這個項目: Hilo project。

支持異步函數的測試
支持對.net 4.5中的async關鍵字標識的異步函數進行測試,測試用例也可以使用await關鍵字。
[TestMethod]
public async Task TestMethod1()
{
var result = await AsyncOperation();
Assert.IsNotNull(result);
}
試了一下,xunit和微軟自家的ms-test都支持,其它的測試框架沒試過。
不過需要注意的是:其返回值必須是Task,而不能是平時用的void。如果寫成void,則會出錯:ms-test不把它識別為測試用例,xunit測試結果不正確。
集成打樁框架Fakes
Visual Studio 2012中提供了一個Fakes框架,方便我們在測試用例中進行打樁操作。關於其詳細信息可以參看MSDN文章:Isolating Code under Test with Microsoft Fakes。

PS:
-
關於單元測試工具,由於我了解的不多,如下有一份nunit、xunit及ms-test的功能和使用方式比較,感覺大都是大同小異,如果有誰有其特點描述相關文章,歡迎推薦一下。
-
關於ms-test的使用方式,可以參看MSDN文章:Writing Unit Tests for the .NET Framework with the Microsoft Unit Test Framework for Managed Code。不過貌似都是英文的,習慣中文的朋友可以參看下這篇文章:使用 Visual Studio Team Test 進行單元測試,這篇文章是介紹vs2005的,有的功能已經不一樣了(大都是測試界面以及功能上的一點微調),不同寫測試用例的方法還是基本相同的,當入門教程還是不錯的。
