单元测试顺序约定?

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() { ... }
}