NUnit以编程方式设置测试名称

时间:2014-04-28 04:52:48

标签: c# asp.net .net unit-testing nunit

拥有此单元测试代码段,取自NUnit TestCaseSource

[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
    Assert.AreEqual( q, n / d );
}

static object[] DivideCases =
{
    new object[] { 12, 3, 4 },
    new object[] { 12, 2, 6 },
    new object[] { 12, 4, 3 } 
};

它正确运行测试三次,但在输出中我得到相同的测试方法名称," DivideTest"跑了三次。

我想根据代码中定义的一些值以编程方式更改/设置测试名称。

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:4)

在您发布的链接中,有一个片段,您可以通过TestCaseSource属性链接的方法显式创建TestCaseData对象。执行此操作时,您可以控制设置每个单独测试用例的名称。请参阅下面的最后一个TestCaseData实例。

 public static IEnumerable TestCases
  {
    get
    {
      yield return new TestCaseData( 12, 3 ).Returns( 4 );
      yield return new TestCaseData( 12, 2 ).Returns( 6 );
      yield return new TestCaseData( 12, 4 ).Returns( 3 );
      yield return new TestCaseData( 0, 0 )
        .Throws(typeof(DivideByZeroException))
        .SetName("DivideByZero")
        .SetDescription("An exception is expected");
    }
  }