如何包含有效和无效的测试用例

时间:2009-12-18 13:15:53

标签: data-driven-tests

我有一个简单的测试方法

public double Divide(double numerator, double denominator)       
{
    if (denominator == 0)
    {
        throw new NullReferenceException("Cannot divide by zero.");
    }
    return numerator / denominator;
}

现在我的Testcase数据文件看起来像这样

<TestCase>
    <Numerator>-2.5</Numerator>
    <Denominator>1</Denominator>
    <ExpectedResult>-2.5</ExpectedResult>
</TestCase>
<TestCase>
    <Numerator>55</Numerator>
    <Denominator>5</Denominator>
    <ExpectedResult>11</ExpectedResult>
</TestCase>
<TestCase>
    <Numerator>5</Numerator>
    <Denominator>0</Denominator>
    <ExpectedResult>DivideByZeroException</ExpectedResult>
</TestCase>

将所有这些测试用例包含在单个测试方法中的方法应该是什么。我的基本问题是处理异常测试方法。我知道我可以在测试方法中使用[ExpectedException(typeof(DivideByZeroException)]属性,但在这种情况下,此方法不适合其他2个测试csa。

有人可以帮助我如何将所有这些测试用例整合到一个方法中。

2 个答案:

答案 0 :(得分:0)

您可以捕获测试方法中的DivideByZeroException然后Assert.Sucess();(在catch块内)

答案 1 :(得分:0)

这样的事情:

public void TestQuotients() {
    try {
      // do the test which causes divide by 0
      int x = 0;
      int y = 10 / x;

      Assert.Fail("should have gotten exception");
    }
    catch (DivideByZeroException e) {
      // expected behavior
    }

    try {
      // do the next test which causes divide by 0
      int k = 0;
      int t = 100 / k;
      Assert.Fail("should have gotten exception");
    }
    catch (DivideByZeroException e) {
      // expected behavior
    }

    // this test doesn't cause exception
    double x = 100;
    double y = 10;
    Assert.AreEqual(10,x/y,"The quotient is wrong.");
}