良好的命名

一些不好的例子可以很好地說明良好命名的重要性:

[Test]
Test1() {...} //Cryptic name - absolutely no information 

[Test]
TestFoo() {...} //Name of the function - and where can I find the expected behaviour?

[Test]
TestTFSid567843() {...} //Huh? You want me to lookup the context in the database?

好的測試需要好名字。好測試不測試方法,測試場景或要求。

良好的命名還提供有關上下文和預期行為的資訊。理想情況下,當你的構建計算機上的測試失敗時,你應該能夠在不檢視測試程式碼的情況下決定出現了什麼問題,甚至更難,有必要對其進行除錯。

良好的命名使你有時間閱讀程式碼和除錯:

[Test]
public void GetOption_WithUnkownOption_ReturnsEmptyString() {...}
[Test]
public void GetOption_WithUnknownEmptyOption_ReturnsEmptyString() {...}

對於初學者,使用 EnsureThat_ 或類似字首啟動測試名稱可能會有所幫助。從“EnsureThat_”開始,有助於開始考慮需要測試的場景或需求:

[Test]
public void EnsureThat_GetOption_WithUnkownOption_ReturnsEmptyString() {...}
[Test]
public void EnsureThat_GetOption_WithUnknownEmptyOption_ReturnsEmptyString() {...}

命名對於測試裝置也很重要。在測試類之後命名測試夾具:

[TestFixture]
public class OptionsTests //tests for class Options
{
    ...
}

最後的結論是:

良好的命名會帶來良好的測試,從而在生產程式碼中實現良好的設計。