Visual Studio 使用教程:为托管代码创建和运行单元测试(上)

本文将逐步指导您使用用于托管代码的Microsoft单元测试框架和Visual Studio Test Explorer创建,运行和自定义一系列单元测试。您从正在开发的C#项目开始,创建执行其代码的测试,运行测试并检查结果。然后,您更改项目代码并重新运行测试。

Visual Studio 是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。

Visual Studio正式版


本文将逐步指导您使用用于托管代码的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]属性。

元测试项目中可以具有其他不具有该[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正版授权,或了解更多产品信息请点击【咨询在线客服】

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月13日
下一篇 2020年1月13日

相关推荐

发表回复

登录后才能评论