iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
0

今天要開始簡單的入門Unit Test,範例於書本第二章(參考第一天的書籍)。
這邊我們有一個功能,判斷取得的檔案是log檔。而我們要如何判斷是log檔呢?最簡單的方式就是判斷他的附檔名,也就是.log作為結尾。所以我們來判斷檔案是否為.log,如果不是的話就表示錯誤。

所以我們測試內容就是「判斷是否為log檔」這個功能是可以正常運作,因此我們要準備兩個測試條件,一個是正確的副檔名,我們預期它會回傳true;同樣的,我們準備一個錯誤的附檔名,我們期望他會回傳false

  • 建立判斷的程式檔
    (程式檔:LogAnalyzer.cs)
    首先當然是要建立一個可以測試附檔名的功能。這邊是假設已經取得檔案的名稱,並且載入於IsValidLogFileName(string)中。
    之後再用fileName判斷是否為.log檔案(StringComparison.CurrentCultureIgnoreCase,為不比較大小寫),如果是回傳true,不是的話傳false
using System;

namespace LearningUT
{
    class LogAnalyzer
    {
        public static void Main()
        {

        }
        public bool IsValidLogFileName(string fileName)
        {
            //判斷:不分大小寫
            if (!fileName.EndsWith(".log", StringComparison.CurrentCultureIgnoreCase))
            {
                return false;
            }
            
            return true;
        }
    }
}
  • 建立測試檔案
    (測試程式:LogAnalyzerTests.cs)
    當完成了我們要開發的功能後,我們可以建立這樣的案例:測試正確檔案、錯誤檔案。
    範例中,IsValidLogFileName_goodExtensionUppercase_ReturnsTrue,用正確的檔名來測試此功能是否正常,並且我們期望它會回傳true。所以我們在Assert.True(result),表示期待回傳是true,如果不是表示程式錯誤。而IsValidLogFileName_BadExtension_ReturnsFalse,是用拿錯誤檔名來測試,我們預期他會回傳false,同樣的在Assert.False(result),我們會比較 result是否為false,如果不是就是我們的程式寫錯啦!
using NUnit.Framework;

namespace LearningUT
{
    class LogAnalyzerTest
    {
        [Test]
        public void IsValidLogFileName_BadExtension_ReturnsFalse()
        {
            LogAnalyzer analyzer = new LogAnalyzer();
            bool result = analyzer.IsValidLogFileName("filewithbadextension.foo");
            //bool result = analyzer.IsValidLogFileName("filewithbadextension.log");
            Assert.False(result);   //預期:False。當發生非預期,就會Error,表示程式寫錯
        }

        [Test]
        public void IsValidLogFileName_goodExtensionUppercase_ReturnsTrue()
        {
            LogAnalyzer analyzer = new LogAnalyzer();
            bool result = analyzer.IsValidLogFileName("filewithgoodextension.LOG");
            Assert.True(result);   //預期:True。當發生非預期,就會Error,表示程式寫錯
        }
    }
}
  • 結果

以上兩個檔案寫完後,就是進行測試囉!
點擊 執行,然後點擊 所有測試,就會自動啟動測試工具,進行Unit Test。
當回報顯示成功(亮綠燈),表示這個功能通過測試,恭喜!!

https://ithelp.ithome.com.tw/upload/images/20171209/20103826dIyzFmPV6o.png


明天將會說明測試內容,以及這個範例的精神


上一篇
【Day 3】安裝NUnit
下一篇
【Day 5】解說第一個Unit Test之1 -程式碼解說
系列文
【Unit Test】Unit Test with C#31

尚未有邦友留言

立即登入留言