当前位置:文档之家› 单元测试-测试报告

单元测试-测试报告

单元测试-测试报告一、准备工作1 打开Visual Studio。

2 在“文件”菜单上指向“新建”,然后单击“项目”。

此时将出现“新建项目”对话框。

3 在“已安装的模板”下单击“Visual C#”。

4 在应用程序类型的列表中单击“类库”。

5 在“名称”框中键入Bank,然后单击“确定”。

说明:如果名称“Bank”已被使用,请为该项目选择其他名称。

6 将创建新的Bank项目并将其显示在解决方案资源管理器中,而且将在代码编辑器中打开Class1.cs文件。

说明:如果代码编辑器中未打开Class1.cs文件,请在解决方案资源管理器中双击文件Class1.cs将其打开。

7 从上面“系统必备”中复制源代码。

8 用上面“系统必备”中的代码替换Class1.cs的原始内容。

9 在“生成”菜单上,单击“生成解决方案”。

现在您有一个名为“Bank”的项目。

它包含要测试的源代码和用于对该源代码进行测试的工具。

Bank的命名空间“BankAccountNS”包含公共类“BankAccount”,在以下过程中将对该类的方法进行测试。

说明:系统必备中源代码为如下:using System;namespace BankAccountNS{///<summary>///Bank Account demo class.///</summary>public class BankAccount{private string m_customerName;private double m_balance;private bool m_frozen = false;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 (m_frozen){throw new Exception("Account frozen");}if (amount > m_balance){throw new ArgumentOutOfRangeException("amount");}if (amount < 0){throw new ArgumentOutOfRangeException("amount");}m_balance += amount;}public void Credit(double amount){if (m_frozen){throw new Exception("Account frozen");}if (amount < 0){throw new ArgumentOutOfRangeException("amount");}m_balance += amount;}private void FreezeAccount(){m_frozen = true;}private void UnfreezeAcount(){m_frozen = false;}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);}}}二、创建单元测试10 如果代码编辑器中未打开Class1.cs文件,请在解决方案资源管理器中双击Bank项目中的Class1.cs文件。

11 在Class1.cs文件的“BankAccount”类中,滚动到“Debit()”方法。

12 右击“Debit()”方法,然后选择“创建单元测试”。

将显示“创建单元测试”对话框。

在“当前选择”下,树结构将显示保存“BankAccount”类的程序集的类和成员层次结构。

使用此页可以为选定的任何成员生成单元测试,并可以选择要在其中放置生成的单元测试的测试项目。

在该树结构中,只选择了“Debit()”方法。

将其保留选定状态并选择“Credit()”方法。

13 对于“输出项目”,请选择“创建新的VisualC#测试项目”。

14 单击“设置”。

随即出现“测试生成设置”对话框。

在“命名设置”下,可以更改测试文件、测试类和测试方法在生成时的命名方式。

在“常规”下,可以更改测试生成的其他方面。

将这些设置保留为默认值,然后单击“确定”。

15 在“创建单元测试”对话框中单击“确定”。

随即出现“新建测试项目”对话框。

16 接受默认名称,然后单击“创建”。

这将创建一个名为TestProject1的项目,该项目将显示在解决方案资源管理器中。

一个名为BankAccountTest.cs的文件添加到TestProject1中,该文件包含一个测试类。

该类中填充有一个TestContext属性以及测试“Debit()”和“Credit()”方法的方法。

说明:将自动为每个测试方法分配“TestMethod()”特性。

每个测试都与要测试的测试代码中的一个方法相对应。

测试方法保存在已分配“TestClass()”特性的测试类中。

17 在BankAccountTest.cs中,指定要测试的变量的值。

滚动到“DebitTest”方法,在此可以看到//TODO行,它们指示要设置的变量。

18 若要了解DebitTest方法将使用哪些值,请打开Class1.cs文件并滚动到“Main”方法。

请注意,客户名称初始化为“Mr.BryanWalton”,帐户余额初始化为“11.99”,调用“Credit”方法时使用参数“5.77”,调用“Debit”方法时使用参数“11.22”。

因此,如果此帐户开始时“Balance”为“11.99”,则在传递“11.22”时调用“Debit”方法应生成新“Balance”值“0.77”。

说明:在本演练后面的部分中,您将使用此预期的“Balance”值(0.77)。

19 在BankAccountTest.cs文件中,滚动到“DebitTest”方法。

20 设置下列值:BankAccounttarget = new BankAccount("Mr.Bryan Walton", 11.99);doubleamount = 11.22;21在“CreditTest”方法中,将“Mr.BryanWalton”和11.99添加到新的BankAccount中。

22 保存BankAccountTest.cs文件。

您已创建了一个源代码文件,其中包含Bank项目的测试。

现在可以对Bank项目的代码运行“BankAccountTest”类中的测试了。

三、运行和自定义单元测试23 在“测试”菜单上,单击“窗口”,然后选择“测试视图”。

将显示“测试视图”窗口。

24 右击“DebitTest”,再单击“运行选定内容”。

如果“测试结果”窗口尚未打开,则它现在将打开。

“DebitTest”测试运行。

在“测试结果”窗口的“结果”列中,当测试运行时,测试状态将显示为“正在运行”。

测试运行完成后,测试的结果将更改为“没有结论”。

25 在“测试结果”窗口中右击表示测试的行,然后单击“查看测试结果详细信息”。

26 在“测试结果详细信息”页中,将显示错误消息“Assert.Inconclusive失败。

无法验证不返回值的方法。

”若要创建成功的测试,请先查找并评估此“Assert”语句。

27 若要查找包含“Assert”语句的测试方法,请打开BankAccountTest.cs文件并滚动到“DebitTest()”方法。

28 Assert语句是“DebitTest”方法中的最后一行。

它显示如下内容:Assert.Inconclusive("无法验证不返回值的方法。

");注释掉此Assert语句。

29 如果现在运行测试,则会得出“已通过”结果,但这仅仅是因为它没有对任何内容进行测试。

必须添加对预期的结果进行测试的代码。

向“DebitTest”方法的末尾添加以下语句:Assert.AreEqual((System.Convert.ToDouble(0.77)),target.Balance,0.05);此语句将预期结果(0.77)与调用“BankAccount”类的“Balance”方法所产生的实际结果进行比较。

如果两个值不相等,则“Assert”返回“False”,从而使测试失败。

说明:此“Assert”语句还包括第三个参数“delta”,其值为0.05。

在“Assert.AreEqual”方法的此重载中需要该delta参数;它可以补偿“Doubles”等浮点型所固有的舍入错误。

您已运行了“BankAccountTest”测试类的生成的“DebitTest”方法,注意它需要做的更改,请就此做出这些更改。

现在,可以测试您应用程序中“Debit”方法的精确性。

四、运行单元测试并修复代码30 再次运行Debit测试:在文件BankAccountTest.cs中,右击“DebitTest()”方法,然后单击“运行测试”。

在“测试结果”窗口的“结果”列中,当测试运行时,测试状态将显示为“正在运行”。

测试运行完成后,测试的结果将更改为“未通过”。

31 在“测试结果”窗口中右击表示测试的行,然后单击“查看测试结果详细信息”。

这将打开“测试结果详细信息”页,其中显示以下错误消息:“Assert.AreEqual失败。

预期值<0.77>和实际值<23.21>之间的差不应大于<0.05>”。

这些数字似乎表明数学运算不正确。

由于“BankAccountTest”类的“DebitTest”方法测试“BankAccount”类的“Debit”方法,所以从检查“Debit”方法开始。

32 打开Class1.cs文件并滚动到“Debit”方法。

33 请注意以下赋值:m_balance+= amount;此赋值向余额增加金额,在“Debit”方法中,应当减去赋值。

相关主题