单元测试顺序约定

本文关键字:约定 测试顺序 单元 | 更新日期: 2023-09-27 18:09:58

我正在为ASP创建单元测试。. NET MVC在c#中使用NUnit。

简短版本:我应该按字母顺序排列我的测试方法还是按属于被测试类的方法的顺序排列?

例如:假设我想测试这个类:

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

我知道一个简单的问题,但是我在谷歌上找不到任何关于这个的约定,只是很多命名测试方法的约定。谢谢你的帮助!

单元测试顺序约定

我会用第一种方法。

我也会从你的测试名称中删除Test_,因为它是多余的命名。

我所见过的为测试命名的最佳约定是:

MethodName_ContextOfTest_ResultOfTest

的例子:

A_WithNullString_ThrowsException

使编写测试特定内容的测试变得非常容易,并且使其他人也更容易理解您正在测试的内容。

如果您升级到NUnit 3(或者已经在使用它),您可以使用[Order]属性,然后您将不必篡改您的测试名称。查看NUnit Order属性的文档。

public class MyFixture
{
    [Test, Order(1)]
    public void TestA() { ... }

    [Test, Order(2)]
    public void TestB() { ... }
    [Test]
    public void TestC() { ... }
}