如何测试一个类库 C#

2025-05-07 22:41:01
推荐回答(1个)
回答1:

  1. TestCase特性有两个效果,包括标记一个方法使用参数并且在调用的时候提供内置数据。示例如下,本示例会使用不同数据集执行3次:

  2. 代码如下:

    [TestCase(12,3,4)]

    [TestCase(12,2,6)]

    [TestCase(12,4,3)]

    public void DivideTest(int n, int d, int q)

    {

      Assert.AreEqual( q, n / d );

    }

  3. Note:.net特性的限制了参数类型,NUnit会在提供给测试用力前尝试将提供的值用Convert.ChangeType()进行转换。

  4. 在一个测试方法上可以多次运用TestCase特性,TestCase特性还可以使用FactoriesAttribute等特性来提供数据。

  5. 通过使用Result参数,测试用例可以有更简单

  6. 代码如下:

    [TestCase(12,3, Result=4)]

    [TestCase(12,2, Result=6)]

    [TestCase(12,4, Result=3)]

    public int DivideTest(int n, int d)

    {

      return( n / d );

    }

  7. 在上面的示例中,NUnit会检查方法返回值是否与提供的Result参数值相等。

  8. TestCaseAttribute还提供一些列其他属性:

    Description:描述测试用例详情

    ExpectedException:指定期望抛出的异常

    ExpectedExceptionName:指定期望抛出异常的全名

    ExpectedMessage:指定期望抛出异常的信息

    Explict:设置为true标记测试用例为显示执行,用Reason来诠释缘由

    Ignore:设置为true用于指定忽略测试用例,用Reason来诠释缘由

    IgnoreReason:指定忽略测试用例及缘由,等同于同时使用Ignore && Reason

  9. 在NUnit2.5,会根据字母少顺序排序及执行。从NUnit2.5.1开始,测试用例不会排序,会根据发行的顺序进行执行。这个发现的顺序不是根据特性字典的顺序来排列并且会根据不同的编译器及CLR的版本不同而不同。

  10. 结果就是在一个测试方法中,TestCase特性出现多次或者其他提供数据的特性与TestCase特性一起使用,测试用例的顺序是不明确的。