在 VS 2010 中寫單元測試,是一件簡單的事,但是內建的 ms-test 的效能卻是不好。而其他的 test framework 如 xUnit, MbUnit, NUnit 等,又難與 Team Foundation Server 整合。於是,只能一直使用 ms-test。
在 VS 2012 中,Test Framework 不再是單元測試中第一個要選擇的對象了。因為它有了新的概念:Unit Test Platform。
Unit Test Platform
簡單來說,我們現在可以在 VS12 中作許多不同Test Framework 的單元測試平台了。
安裝 xUnit Test Runner
在 Extensions and Updates 中,找到 xUnit Test Runner 並安裝。
接下來,建立一個平常的 Class Library, 並用 NuGet 安裝 xNnit ,以及引用 ms test framework. 完成如下圖的 References
再來,就寫測試吧。
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Threading;
6: using Microsoft.VisualStudio.TestTools.UnitTesting;
7: using Xunit;
8:
9: namespace ClassLibraryTest
10: {
11: [TestClass]
12: public class Class1
13: {
14: [Fact]
15: public async void Test()
16: {
17: var sut = new AsyncClass();
18: await sut.DoAsyncWork();
19: Xunit.Assert.Equal("Hello", sut.Property);
20: }
21:
22: [TestMethod]
23: public void Test2()
24: {
25: Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(true);
26: }
27: }
28: }
執行測試
在左方的 Test Explorer,就可以看兩種不同的 Test Framework 的測試都可以被找到,且測試完畢。
結論
VS 2012 中的測試,看來又大幅提升了微軟在測試界的地位了。