第四天,裡面有兩個檔案LogAnalyzer.cs 和LogAnalyzerTests.cs。其中LogAnalyzer.cs為主要的功能程式,而另外一個就是我們的主角Unit test的LogAnalyzerTests.cs。本次主軸將會討論這個檔案。
概述一下LogAnalyzer.cs。這是一個測試是否為log檔的檔案,帶入的參數是該檔案的名稱。由此可知我們的判斷依據就是檔名,如果是正確的檔名,將會回傳true
,如果是錯的就是false
。所以在unit test中,我們要執行的測試內容,就是檢查這個「判斷檔名」功能是否正常運作。
首先要製作一個正常的功能,判斷IsValidLogFileName(string)
功能是否正常,所以測試要包含回傳true
和false
,因此有一個會回傳true
的測試:IsValidLogFileName_goodExtensionUppercase_ReturnsTrue
和會傳false
的測試:IsValidLogFileName_BadExtension_ReturnsFalse
。
在每個測試方法上面有個[Test]
,這是一個標記方法的方式,它讓NUit Test可以識別此方法是一個測試的方法。
而測試的方法內有測試目標方法被呼叫,並且帶入我們所要測試的檔名。後面的Assert
是一個Nunit.Framework內的一個Class,提供靜態方法,這是用於聲明某些特定的假設(也就是我們測試期望的回傳值)是應該成立的。以IsValidLogFileName_goodExtensionUppercase_ReturnsTrue
為例,我們是期望它要回傳true
,所以我們使用Assert.True(bool)
,如果測試的值是true
,則表示通過。同樣道理使用Assert.False(bool)
,表示預期是false
。
而如果這兩個測試有通過,在測試結果(第四天最後一張圖)會亮綠燈,當失敗就會亮紅燈。這也就是Unit Test有沒有通過的圖示。
明天將會說明這個測試的精神與結構