Visual Studio 使用教程:為托管代碼創(chuàng)建和運(yùn)行單元測(cè)試(上)
Visual Studio 是功能完備的 IDE,可用于編碼、調(diào)試、測(cè)試和部署到任何平臺(tái),Visual Studio使用 .NET 開(kāi)發(fā) iOS、Android 和 Web 應(yīng)用和游戲。
本文將逐步指導(dǎo)您使用用于托管代碼的Microsoft單元測(cè)試框架和Visual Studio Test Explorer創(chuàng)建,運(yùn)行和自定義一系列單元測(cè)試。您從正在開(kāi)發(fā)的C#項(xiàng)目開(kāi)始,創(chuàng)建執(zhí)行其代碼的測(cè)試,運(yùn)行測(cè)試并檢查結(jié)果。然后,您更改項(xiàng)目代碼并重新運(yùn)行測(cè)試。
創(chuàng)建一個(gè)項(xiàng)目進(jìn)行測(cè)試
- 打開(kāi)Visual Studio。在開(kāi)始窗口中,選擇創(chuàng)建一個(gè)新項(xiàng)目。
- 搜索并選擇C#Console App(.NET Core)項(xiàng)目模板,然后單擊“ 下一步”。
- 將項(xiàng)目命名為Bank,然后單擊創(chuàng)建。
- 該銀行創(chuàng)建項(xiàng)目并顯示在解決方案資源管理器與Program.cs中的代碼編輯器中打開(kāi)文件。
注意:如果Program.cs中是不是在編輯器中打開(kāi),雙擊該文件的Program.cs在解決方案資源管理器中打開(kāi)它。
- 用以下定義類BankAccount的 C#代碼替換Program.cs的內(nèi)容:
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。
- 在“生成”菜單上,單擊“生成解決方案”。
- 您現(xiàn)在有了一個(gè)可以測(cè)試的項(xiàng)目。在本文中,測(cè)試重點(diǎn)在于該Debit方法。Debit從帳戶中提取資金時(shí)將調(diào)用該方法。
創(chuàng)建一個(gè)單元測(cè)試項(xiàng)目
- 在文件菜單上,選擇添加 > 新建項(xiàng)目。
提示:您也可以在解決方案資源管理器中右鍵單擊解決方案,然后選擇添加 > 新建項(xiàng)目。
- 搜索并選擇C#MSTest測(cè)試項(xiàng)目(.NET Core)項(xiàng)目模板,然后單擊“ 下一步”。
- 將項(xiàng)目命名為BankTests。點(diǎn)擊創(chuàng)建。
- 該BankTests項(xiàng)目被添加到該銀行的解決方案。
- 在BankTests項(xiàng)目中,添加對(duì)Bank項(xiàng)目的引用。
- 在解決方案資源管理器中,選擇依賴下BankTests項(xiàng)目,然后選擇添加引用從右鍵菜單。
- 在“引用管理器”對(duì)話框中,展開(kāi)“項(xiàng)目”,選擇“解決方案”,然后檢查“銀行”項(xiàng)。
- 選擇確定。
創(chuàng)建測(cè)試類
創(chuàng)建一個(gè)測(cè)試類以驗(yàn)證BankAccount該類。您可以使用由項(xiàng)目模板生成的UnitTest1.cs文件,但為文件和類指定更多描述性名稱。
重命名文件和類
- 要重命名文件,請(qǐng)?jiān)诮鉀Q方案資源管理器中,選擇BankTests項(xiàng)目中的UnitTest1.cs文件。從右鍵單擊菜單中,選擇重命名,然后將文件重命名為BankAccountTests.cs。
- 要重命名該類,請(qǐng)將光標(biāo)放在UnitTest1代碼編輯器中,右鍵單擊,然后選擇“ 重命名”。鍵入BankAccountTests,然后按Enter鍵。
現(xiàn)在,BankAccountTests.cs文件包含以下代碼:
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BankTests { [TestClass] public class BankAccountTests { [TestMethod] public void TestMethod1() { } } }
添加using語(yǔ)句
在測(cè)試類中添加一條using語(yǔ)句,以能夠在不使用完全限定名稱的情況下調(diào)用被測(cè)項(xiàng)目。在類文件的頂部,添加:
using BankAccountNS;
測(cè)試等級(jí)要求
測(cè)試課程的最低要求是:
- [TestClass]在包含要在“測(cè)試資源管理器”中運(yùn)行的單元測(cè)試方法的任何類上,此屬性都是必需的。
- 您希望測(cè)試資源管理器識(shí)別的每個(gè)測(cè)試方法都必須具有該[TestMethod]屬性。
創(chuàng)建第一個(gè)測(cè)試方法
在此過(guò)程中,您將編寫(xiě)單元測(cè)試方法以驗(yàn)證類Debit方法的行為BankAccount。
至少需要檢查三種行為:
- 如果借方金額大于余額,則此方法將引發(fā)ArgumentOutOfRangeException。
- 如果借方金額小于零,則該方法將引發(fā)ArgumentOutOfRangeException。
- 如果借方金額有效,則該方法從帳戶余額中減去借方金額。
提示:您可以刪除默認(rèn)TestMethod1方法,因?yàn)樵诒狙菥氈胁粫?huì)使用它。
創(chuàng)建測(cè)試方法
第一個(gè)測(cè)試驗(yàn)證有效金額(即小于帳戶余額且大于零的金額)從帳戶中提取了正確的金額。將以下方法添加到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"); }該方法很簡(jiǎn)單:它BankAccount以期初余額設(shè)置新對(duì)象,然后提取有效金額。它使用AreEqual方法來(lái)驗(yàn)證期末余額是否符合預(yù)期。
測(cè)試方法要求
測(cè)試方法必須滿足以下要求:
- 它用[TestMethod]屬性裝飾。
- 它返回void。
- 它不能有參數(shù)。
本文內(nèi)容篇幅較長(zhǎng),分為上下兩篇,點(diǎn)擊可以查看下篇>>,敬請(qǐng)期待~
喜歡該產(chǎn)品的朋友可以點(diǎn)擊下載Visual Studio試用版免費(fèi)體驗(yàn)~
想要購(gòu)買Visual Studio正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊【咨詢?cè)诰€客服】