单元测试顺序约定?
Unit Test Order Convention?
我正在使用 NUnit 在 C# 中为 ASP.NET MVC 应用程序创建单元测试。
简短版本: 我应该按字母顺序还是按属于正在测试的 class 的方法的顺序对我的测试方法进行排序?
例如: 假设我要测试 class:
public class MyClass{
public void B(){}
public void A(){}
public void C(){}
}
像这样构建我的测试 class 是否更合适...
[TestFixture]
public class MyClassTests{
[Test]public void Test_B(){}
[Test]public void Test_A(){}
[Test]public void Test_C(){}
}
或者像这样...
[TestFixture]
public class MyClassTests{
[Test]public void Test_A(){}
[Test]public void Test_B(){}
[Test]public void Test_C(){}
}
我知道一个简单的问题,但我无法从我的谷歌搜索中找到任何约定,只有很多命名测试方法的约定。感谢您的帮助!
我会用第一种方法。
我还会从您的测试名称中删除 Test_,因为它是多余的命名。
我见过的命名测试的最佳命名约定是:
MethodName_ContextOfTest_ResultOfTest
示例:
A_WithNullString_ThrowsException
使编写测试特定内容的测试变得非常容易,并使其他人也更容易理解您正在测试的内容。
如果您升级到 NUnit 3(或已经在使用它),您可以使用 [Order]
属性,这样您就不必破坏您的测试名称。请参阅 NUnit Order Attribute.
的文档
public class MyFixture
{
[Test, Order(1)]
public void TestA() { ... }
[Test, Order(2)]
public void TestB() { ... }
[Test]
public void TestC() { ... }
}
我正在使用 NUnit 在 C# 中为 ASP.NET MVC 应用程序创建单元测试。
简短版本: 我应该按字母顺序还是按属于正在测试的 class 的方法的顺序对我的测试方法进行排序?
例如: 假设我要测试 class:
public class MyClass{
public void B(){}
public void A(){}
public void C(){}
}
像这样构建我的测试 class 是否更合适...
[TestFixture]
public class MyClassTests{
[Test]public void Test_B(){}
[Test]public void Test_A(){}
[Test]public void Test_C(){}
}
或者像这样...
[TestFixture]
public class MyClassTests{
[Test]public void Test_A(){}
[Test]public void Test_B(){}
[Test]public void Test_C(){}
}
我知道一个简单的问题,但我无法从我的谷歌搜索中找到任何约定,只有很多命名测试方法的约定。感谢您的帮助!
我会用第一种方法。
我还会从您的测试名称中删除 Test_,因为它是多余的命名。
我见过的命名测试的最佳命名约定是:
MethodName_ContextOfTest_ResultOfTest
示例:
A_WithNullString_ThrowsException
使编写测试特定内容的测试变得非常容易,并使其他人也更容易理解您正在测试的内容。
如果您升级到 NUnit 3(或已经在使用它),您可以使用 [Order]
属性,这样您就不必破坏您的测试名称。请参阅 NUnit Order Attribute.
public class MyFixture
{
[Test, Order(1)]
public void TestA() { ... }
[Test, Order(2)]
public void TestB() { ... }
[Test]
public void TestC() { ... }
}