良好的命名

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

[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
{
    ...
}

最后的结论是:

良好的命名会带来良好的测试,从而在生产代码中实现良好的设计。