我正在使用NUnit在C#中为ASP.NET MVC应用程序创建单元测试。
简短版本:我应该按字母顺序排序我的测试方法,还是按照属于被测试类的方法的顺序排序?
For Instance:我想测试课程:
public class MyClass{
public void B(){}
public void A(){}
public void C(){}
}
对我来说,构建我的测试类是否更合适......
[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(){}
}
我知道一个简单的问题,但是我从谷歌搜索中找不到任何约定,只是为了命名测试方法的许多惯例。谢谢你的帮助!
答案 0 :(得分:3)
我会以第一种方式做到这一点。
我还会从测试名称中删除Test_,因为它是冗余命名。
我在命名测试中看到的最佳命名约定是:
MethodName_ContextOfTest_ResultOfTest
示例:
A_WithNullString_ThrowsException
使您可以非常轻松地编写测试来测试特定的内容,并使其他人更容易理解您正在测试的内容。
答案 1 :(得分:1)
如果您升级到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() { ... }
}