GUI/Console 应用程序负责发现、执行和报告测试结果。Visual Studio 2005 Team System 将作为本文的测试运行器。
测试装置示例请考虑以下针对BankAccount类的类关系图,以及一个示例测试装置 (BankAccountTests.cs)。
图1. BankAccount类
示例测试装置: BankAccountTests.csusing BankAccountDemo.Business; using Microsoft.VisualStudio.QualityTools.UnitTesting.Framework; namespace BankAccountDemo.Business.Tests { [TestClass()] public class BankAccountTest { [TestInitialize()] public void Initialize() { } [TestCleanup()] public void Cleanup() { } [TestMethod()] public void ConstructorTest() { float currentBalance = 500; BankAccount target = new BankAccount(currentBalance); Assert.AreEqual(currentBalance, target.CurrentBalance, "Balances are not equal upon creation"); } [TestMethod()] public void DepositMoneyTest() { float currentBalance = 500; BankAccount target = new BankAccount(currentBalance); float depositAmount = 10; target.DepositMoney(depositAmount); Assert.IsTrue( (currentBalance + depositAmount) > target.CurrentBalance, "Deposit not applied correctly"); } [TestMethod()] public void MakePaymentTest() { float currentBalance = 500; BankAccount target = new BankAccount(currentBalance); float paymentAmount = 250; target.MakePayment(paymentAmount); Assert.IsTrue(currentBalance - paymentAmount == target.CurrentBalance, "Payment not applied correctly"); } } } 主单元测试概念 == 断言用于该形式单元测试的主要概念是,自动化单元测试是基于“断言”的,即可定义为“事实或您相信为事实的内容”。从逻辑角度看,请考虑该语句“when I do {x}, I expect {y} as a result”。
这可以轻松地翻译为代码,方法是使用 Microsoft.VisualStudio.QualityTools.UnitTesting.Framework 命名空间中可用的三个“断言”类中的任一个:Assert、StringAssert和CollectionAssert。主类Assert提供用于测试基础条件语句的断言。StringAssert类自定义了在使用字符串变量时有用的断言。同样,CollectionAssert类包括在使用对象集合时有用的断言方法。
表 3 显示可用于当前版本 Unit Testing Framework 的断言。
表 3. VSTS Unit Testing Framework 断言 断言类 StringAssert 类 CollectionAssert 类 AreEqual() AreNotEqual() AreNotSame() AreSame() EqualsTests() Fail() GetHashCodeTests() Inconclusive() IsFalse() IsInstanceOfType() IsNotInstanceOfType() IsNotNull() IsNull() IsTrue() Contains() DoesNotMatch() EndsWith() Matches() StartsWith() AllItemsAreInstancesOfType() AllItemsAreNotNull() AllItemsAreUnique() AreEqual() AreEquivalent() AreNotEqual() AreNotEquivalent() Contains() DoesNotContain() IsNotSubsetOf() IsSubsetOf() 这些自动化单元测试用什么运行?正如前面提到的,xUnit 框架将“测试运行器”的概念定义为应用程序负责:(a) 执行单元测试;(b) 报告测试结果。对于本文,包含 Visual Studio 2005 Team System (VSTS) 的 Unit Testing 引擎作为我们的“测试运行器”。图 2 表示BankAccountTests.cs类的执行结果。
图2.测试结果窗格:单元测试执行结果
Microsoft Visual Studio 2005 使用源项目的代码模型动态填充该视图。它基于该源代码中的自定义属性动态发现有关该测试套件的信息。表 4 表示最常见的单元测试属性(以及执行的次序)。
表 4. 常见单元测试属性 属性描述TestClass()
该属性表示一个测试装置。
TestMethod()
该属性表示一个测试用例。
AssemblyInitialize()
在执行为执行选择的第一个TestClass()中的第一个TestMethod()之前,执行带有该属性的方法。
ClassInitialize()
带有该属性的方法在执行第一个测试之前调用。
TestInitialize()
带有该属性的方法在执行每个TestMethod()之前调用。
TestCleanup()
文章来源于领测软件测试网 https://www.ltesting.net/