程式碼重構與單元測試——測試項目(二)

 

二、創建測試項目

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

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);
        }
    }
}

 

 

 

Tags: