HDa*_*ave 17 java unit-testing naming-conventions
我最近继承了一个由不同的人在不同时间编写的应用程序,并寻求如何标准化的指导.
假设NUnit:
[Test]
public void ObjectUnderTest_StateChanged_Consequence()
{
Assert.That(tra_la_la);
}
[Test]
public void ObjectUnderTest_Behaviour_Consequence()
{
Assert.That(tra_la_la);
}
Run Code Online (Sandbox Code Playgroud)
例如:
[Test]
public void WifeIsTired_TakeWifeToDinner_WifeIsGrateful()
{
Assert.That(tra_la_la);
}
[Test]
public void WifeIsTired_MentionNewGirlfriend_WifeGetsHalf()
{
Assert.That(tra_la_la);
}
Run Code Online (Sandbox Code Playgroud)
我只想写下它的用途.这不像你要在其他任何地方输入名字,所以有一个testWibbleDoesNotThrowAnExceptionIfPassedAFrobulator不是问题.显然,任何测试都以"测试"开始.
没有这样的标准,不同的人/地方会有不同的方案。重要的是你坚持一个标准。
就我个人而言,我是以下内容的粉丝 - C# 中的示例代码,但非常接近 Java,适用相同的规则:
[Test]
public void person_should_say_hello()
{
// Arrange
var person = new Person();
// Act
string result = person.SayHello();
// Assert
Assert(..., "The person did not say hello correctly!");
}
Run Code Online (Sandbox Code Playgroud)
显式
测试名称应给出被测类的名称。在这个例子中,被测试的类是Person. 测试名称还应具有正在测试的方法的名称。这样,如果测试失败,您至少会知道去哪里解决它。我还建议遵循AAA - 安排、执行、断言规则,它将确保您的测试易于阅读和遵循。
友好的失败信息
在断言结果/状态时,包含可选消息很有用。这使得测试失败时更容易,尤其是作为构建过程的一部分或通过外部工具运行时。
下划线
我遵循的最终(尽管可选)立场是使用下划线作为测试名称。虽然我不喜欢生产代码中的下划线,但它们在测试名称中的使用很有用,因为测试名称通常要长得多。快速浏览一下使用下划线的测试名称被证明更具可读性,尽管这是主观的,并且是关于单元测试实践的许多争论的根源。
集成测试
相同的标准适用于集成测试,唯一的区别是此类测试的位置应与单元测试分开。在上面的示例代码中,测试类将被调用PersonTests并位于名为PersonTests.cs. 集成测试将以类似的方式命名 - PersonIntegrationTests,位于PersonIntegrationTests.cs. 相同的项目可用于这些测试,但确保它们位于不同的目录中。
| 归档时间: |
|
| 查看次数: |
5723 次 |
| 最近记录: |