使用 Visual Studio 對公共方法進行單元測試,跟以前 NUnit 一樣,都是引用需要的類,然后對公共方法進行測試。
但是 Visual Studio 還可以對類的私有方法進行測試。而Visual Studio 不答應測試代碼跟實際代碼放在一個項目中,我們來看看是Visual Studio UnitTest如何做的。
比如我們有這樣一個私有方法
namespace ClassLibrary1{ public class DivisionClass{ PRivate int Divide_private(int numerator, int denominator){ return numerator / denominator; } } } 我們只要在這個私有方法的右鍵菜單中選擇 創建單元測試,系統就自動產生了這個私有方法的單元測試代碼。
下面我們來分析產生的單元測試代碼,看Visual Studio UnitTest 是如何對私有方法進行單元測試的
簡單來說,Visual Studio UnitTest 生成私有方法的單元測試時,將自動創建一個私有訪問器。私有訪問器是測試方法用于訪問私有代碼的方法。單元測試生成對私有訪問器的調用,然后通過私有訪問器來調用私有方法。私有訪問器駐留在測試項目中的文件中;因此將被編譯為測試項目程序集。
[DeploymentItem("ClassLibrary1.dll")] [TestMethod()] public void Divide_privateTest() { DivisionClass target = new DivisionClass(); TestProject1.ClassLibrary1_DivisionClassAccessor accessor = new TestProject1.ClassLibrary1_DivisionClassAccessor(target); int numerator = 4; int denominator = 0; int eXPected = 0; int actual; actual = accessor.Divide_private(numerator, denominator); Assert.AreEqual(expected, actual, "ClassLibrary1.DivisionClass.Divide_private 未返回所需的值。"); Assert.Inconclusive("驗證此測試方法的正確性。"); }