Visual Studio 使用教程:为托管代码创建和运行单元测试(上)
Visual Studio 是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。
本文将逐步指导您使用用于托管代码的Microsoft单元测试框架和Visual Studio Test Explorer创建,运行和自定义一系列单元测试。您从正在开发的C#项目开始,创建执行其代码的测试,运行测试并检查结果。然后,您更改项目代码并重新运行测试。
创建一个项目进行测试
- 打开Visual Studio。在开始窗口中,选择创建一个新项目。
- 搜索并选择C#Console App(.NET Core)项目模板,然后单击“ 下一步”。
- 将项目命名为Bank,然后单击创建。
- 该银行创建项目并显示在解决方案资源管理器与Program.cs中的代码编辑器中打开文件。
注意:如果Program.cs中是不是在编辑器中打开,双击该文件的Program.cs在解决方案资源管理器中打开它。
- 用以下定义类BankAccount的 C#代码替换Program.cs的内容:
using System; namespace BankAccountNS { ////// Bank account demo class. ///public class BankAccount { private readonly string m_customerName; private double m_balance; private BankAccount() { } public BankAccount(string customerName, double balance) { m_customerName = customerName; m_balance = balance; } public string CustomerName { get { return m_customerName; } } public double Balance { get { return m_balance; } } public void Debit(double amount) { if (amount > m_balance) { throw new ArgumentOutOfRangeException("amount"); } if (amount < 0) { throw new ArgumentOutOfRangeException("amount"); } m_balance += amount; // intentionally incorrect code } public void Credit(double amount) { if (amount < 0) { throw new ArgumentOutOfRangeException("amount"); } m_balance += amount; } public static void Main() { BankAccount ba = new BankAccount("Mr. Bryan Walton", 11.99); ba.Credit(5.77); ba.Debit(11.22); Console.WriteLine("Current balance is ${0}", ba.Balance); } } }
- 右键单击并在“ 解决方案资源管理器”中选择“重命名”,将文件重命名为BankAccount.cs。
- 在“生成”菜单上,单击“生成解决方案”。
- 您现在有了一个可以测试的项目。在本文中,测试重点在于该Debit方法。Debit从帐户中提取资金时将调用该方法。
创建一个单元测试项目
- 在文件菜单上,选择添加 > 新建项目。
提示:您也可以在解决方案资源管理器中右键单击解决方案,然后选择添加 > 新建项目。
- 搜索并选择C#MSTest测试项目(.NET Core)项目模板,然后单击“ 下一步”。
- 将项目命名为BankTests。点击创建。
- 该BankTests项目被添加到该银行的解决方案。
- 在BankTests项目中,添加对Bank项目的引用。
- 在解决方案资源管理器中,选择依赖下BankTests项目,然后选择添加引用从右键菜单。
- 在“引用管理器”对话框中,展开“项目”,选择“解决方案”,然后检查“银行”项。
- 选择确定。
创建测试类
创建一个测试类以验证BankAccount该类。您可以使用由项目模板生成的UnitTest1.cs文件,但为文件和类指定更多描述性名称。
重命名文件和类
- 要重命名文件,请在解决方案资源管理器中,选择BankTests项目中的UnitTest1.cs文件。从右键单击菜单中,选择重命名,然后将文件重命名为BankAccountTests.cs。
- 要重命名该类,请将光标放在UnitTest1代码编辑器中,右键单击,然后选择“ 重命名”。键入BankAccountTests,然后按Enter键。
现在,BankAccountTests.cs文件包含以下代码:
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BankTests { [TestClass] public class BankAccountTests { [TestMethod] public void TestMethod1() { } } }
添加using语句
在测试类中添加一条using语句,以能够在不使用完全限定名称的情况下调用被测项目。在类文件的顶部,添加:
using BankAccountNS;
测试等级要求
测试课程的最低要求是:
- [TestClass]在包含要在“测试资源管理器”中运行的单元测试方法的任何类上,此属性都是必需的。
- 您希望测试资源管理器识别的每个测试方法都必须具有该[TestMethod]属性。
创建第一个测试方法
在此过程中,您将编写单元测试方法以验证类Debit方法的行为BankAccount。
至少需要检查三种行为:
- 如果借方金额大于余额,则此方法将引发ArgumentOutOfRangeException。
- 如果借方金额小于零,则该方法将引发ArgumentOutOfRangeException。
- 如果借方金额有效,则该方法从帐户余额中减去借方金额。
提示:您可以删除默认TestMethod1方法,因为在本演练中不会使用它。
创建测试方法
第一个测试验证有效金额(即小于帐户余额且大于零的金额)从帐户中提取了正确的金额。将以下方法添加到BankAccountTests该类:
[TestMethod] public void Debit_WithValidAmount_UpdatesBalance() { // Arrange double beginningBalance = 11.99; double debitAmount = 4.55; double expected = 7.44; BankAccount account = new BankAccount("Mr. Bryan Walton", beginningBalance); // Act account.Debit(debitAmount); // Assert double actual = account.Balance; Assert.AreEqual(expected, actual, 0.001, "Account not debited correctly"); }该方法很简单:它BankAccount以期初余额设置新对象,然后提取有效金额。它使用AreEqual方法来验证期末余额是否符合预期。
测试方法要求
测试方法必须满足以下要求:
- 它用[TestMethod]属性装饰。
- 它返回void。
- 它不能有参数。
本文内容篇幅较长,分为上下两篇,点击可以查看下篇>>,敬请期待~
喜欢该产品的朋友可以点击下载Visual Studio试用版免费体验~
想要购买Visual Studio正版授权,或了解更多产品信息请点击