此部份參考書本的第2.4章節。
這邊會講解一些Unit test會包含的架構以及作者表達的命名精神。請參考第四天和第五天
通常一個UT會包含三個行為:
LogAnalyzer analyzer = new LogAnalyzer();
把目標實體化。bool result = analyzer.IsValidLogFileName("filewithbadextension.foo");
Assert.False(result);
所以在程式碼:
[Test]
public void IsValidLogFileName_goodExtensionUppercase_ReturnsTrue()
{
LogAnalyzer analyzer = new LogAnalyzer();
bool result = analyzer.IsValidLogFileName("sion.LOG");
Assert.True(result);
}
可以看到這三個條件。先實體化要測試的對象,接著進行資料測試,最後再檢驗結果是否相同。
在範例中,可以看到方法名稱非常的長,這是作者的命名習慣。目的是直接從名稱就可以快速了解目的以及測試結果。
裡面包含了被測試的功能、測試的條件,以及預期的回傳結果,所以方法名稱有這三個部分:
IsValidLogFileName
。goodExtensionUppercase
。ReturnsTrue
。所以有:IsValidLogFileName_BadExtension_ReturnsFalse
和IsValidLogFileName_goodExtensionUppercase_ReturnsTrue
我們可以解讀:
false
。True
。是不是簡潔有力許多呢?這樣就不需要進入程式碼裡面,就可以快速得知測試項目與內容!
而作者也在程式碼中,這三個部分做出區隔,每個部分都空一行,可以讓閱讀者可以更容易取得這三個部分。
明天將會講解一些NUit可以使用的小功能