程式碼重構與單元測試——測試專案(二)

DotNet菜園發表於2021-07-06
 

二、建立測試專案

     我們已經建立了充電寶計費專案,做為我們這次重構的遺留系統,為了驗證我們每次重構的正確性,我們需要一個測試專案,對我們重構的程式碼進行測試。接下來我們來建立這個測試專案。

1.在Visual Studio 2019的“解決方案資源管理器”中,使用滑鼠右鍵,單擊解決方案名稱,在彈出選單中選擇“新增—》新建專案”。如下圖。

 

2.在“新增新專案”介面中,選擇”c#”、“Windows”、“測試”,此時會出現多個專案模板。選擇“單元測試專案”模板(.net Core),然後點選“下一步”按鈕。如下圖。

 3.在“配置新專案”介面中,填寫“專案名稱”為LeasePowerBankTest,在“位置”中輸入你的目錄名稱。然後點選“下一步”按鈕。如下圖。

 

 

4.在“其他資訊”介面中選擇“目標框架”下拉框中選擇“NET50”,然後點選“建立”按鈕。如下圖。

 5.在對上面充電寶計費專案進行測試之前,我們必須先引用充電寶專案。在解決方案資源管理器中,選中LeasePowerBankTest專案,使用滑鼠右鍵單擊“依賴項”,在彈出選單中使用滑鼠左鍵單擊“新增專案引用”,在彈出“引用管理器”對話方塊中選擇“LeasePowerBank”專案,然後點選“確定”按鈕。如下圖。

 

6.在對上面充電寶計費專案程式碼重構之前,我們還必須要有上述程式碼的測試用例。因為在每次重構之前,我們修改的是程式碼的內部結構,而程式碼模組對外的呼叫方式不會變的。所以我們所建立的測試用例可以幫助驗證我們重構後的程式是否可以正常的工作,是否重構後還符合我們的需求。下方就是我們建立的測試用例。

using LeasePowerBank;
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace LeasePowerBankTest
{

    [TestClass]
    public class UnitTest1
    {

        [TestMethod]
        public void CustomerStatementTest()

        {

            //建立使用者
            var customer =new  Customer ( "張三");

            //建立充電寶
            PowerBank regularPowerBank = new PowerBank("低-充電寶", PowerBank.LowTraffic);

 

            //建立租賃資料
            var rental1 = new Rental(regularPowerBank, 5);
            customer.listRentals.Add(rental1);         

            string result = customer.Statement();
            System.Console.WriteLine(result);
        }
    }
}

7.在Visual Studio 2019的選單欄上選擇“測試—》執行所有測試”。如下圖。

8.針對上述案例,上面測試用例的輸出結果如下。在每次重構後,我們都會執行上述測試程式碼,然後觀察結果是否與之前的相同。    結果如下圖。

 

9. 我們建立一個新的測試用例,用以幫助我們驗證一下高人流量地段的計費是否正確。下方就是我們建立的測試用例CustomerHighTest類的程式碼和測試結果。如下圖。

using LeasePowerBank;
using Microsoft.VisualStudio.TestTools.UnitTesting;

 namespace LeasePowerBankTest
{

    [TestClass]
    public class CustomerHighTest
    {

        [TestMethod]
        public void CustomerStatementTest()
        {

            //建立使用者
            var customer = new Customer("王五");

            //建立充電寶
            PowerBank regularPowerBank = new PowerBank("高-充電寶", PowerBank.HighTraffic);

 
            //建立租賃資料
            var rental1 = new Rental(regularPowerBank, 5);


            customer.listRentals.Add(rental1);

            string result = customer.Statement();

            System.Console.WriteLine(result);
        }
    }
}

 

 

 

相關文章