【问题标题】:NUnit set test name programmaticallyNUnit 以编程方式设置测试名称
【发布时间】:2014-04-28 04:52:48
【问题描述】:

有这个单元测试代码sn-p,取自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 } 
};

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

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

有人知道怎么做吗?

【问题讨论】:

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


    【解决方案1】:

    在您发布的链接中,有一个 sn-p,您可以在其中通过通过 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");
        }
      }  
    

    【讨论】:

    • TestCaseData 类在哪里以及它是如何运行的。我无法运行同样的
    • 不使用TestCaseSource时有什么办法吗?
    猜你喜欢
    • 2011-04-05
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多