从派生类修改/设置Nunit测试名称

时间:2018-06-05 07:03:09

标签: c# nunit

我目前正在使用最少的更改测试API的多个版本,这使得可以在两个版本上共享大量测试。我目前正在测试这个问题的解决方案是使用一个带有所有“测试方法”的基类,然后为每个版本分开类,如下所示:

 [TestFixture]
 public abstract class MyApiBaseTest
 {
    public ISharedFunctionsInApiInterface Api { get; set; }

    public void MyTest() 
    { 
       var result = Api.Perform();
       Assert...
    }
 }

 public class MyApiBaseTestV2 : MyApiBaseTest
 {
    public MyApiBaseTestV2() 
    {
        Api = new V2Implementation();  
    }

    [TestCase(TestName = "MyApiV2_WhenSomething_ShouldSomething")]
    public void MyTestV2() 
    { 
       MyTest();
    }
 }

此解决方案的积极作用是我可以完全控制测试名称,如果删除旧版本,我可以删除该文件。但负面的是,它是很多额外的代码和文件,很容易忘记基类中的方法,然后你只是错过了在新版本中测试它。

另一种解决方案当然是使用带参数的多个TestFixture:

 [TestFixture(V1)]
 [TestFixture(V2)]
 public class MyApiTest
 {
   public MyApiTest(Version v) 
   {
      Api = GetFromSomeFactory(v);
   }

    public ISharedFunctionsInApiInterface Api { get; set; }

    [TestCase(TestName = "MyApi_WhenSomething_ShouldSomething")]
    public void MyTest() 
    { 
       var result = Api.Perform();
       Assert...
    }
 }

所以这个问题的正面是,只是一个简单的行,如果他们删除了一个版本的API也很容易删除。问题是两个版本都获得相同的测试名称,而如果你按类过滤它会显示“MyApiTest(version)”,那么使用其他过滤器或者你在内部查看测试结果(例如VSTS)就不清楚了。

所以有更好主意的人?我也尝试使用像{c}这样的格式化程序和继承,但它似乎只是采用基类名称。

0 个答案:

没有答案