今天要開始簡單的入門Unit Test,範例於書本第二章(參考第一天的書籍)。
這邊我們有一個功能,判斷取得的檔案是log檔。而我們要如何判斷是log檔呢?最簡單的方式就是判斷他的附檔名,也就是.log
作為結尾。所以我們來判斷檔案是否為.log
,如果不是的話就表示錯誤。
所以我們測試內容就是「判斷是否為log檔」這個功能是可以正常運作,因此我們要準備兩個測試條件,一個是正確的副檔名,我們預期它會回傳true
;同樣的,我們準備一個錯誤的附檔名,我們期望他會回傳false
。
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;
}
}
}
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。
當回報顯示成功(亮綠燈),表示這個功能通過測試,恭喜!!
明天將會說明測試內容,以及這個範例的精神