1

私は簡単なテスト方法を持っています

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

今、私のテストケースデータファイルは次のようになります

<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>

これらすべてのテストケースを 1 つのテスト メソッドに含めるにはどうすればよいでしょうか。私の基本的な問題は、例外テスト メソッドを処理することです。[ExpectedException(typeof(DivideByZeroException)] 属性をテスト メソッドに使用できることはわかっていますが、その場合、このメソッドは他の 2 つのテスト csaes には適合しません。

これらすべてのテストケースを単一のメソッドに収める方法を教えてください。

4

2 に答える 2

0

DivideByZeroExceptionテストメソッドの内部をキャッチしてからAssert.Sucess();(catchブロック内で)キャッチできます

于 2009-12-18T13:20:07.417 に答える
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.");
}
于 2009-12-18T13:21:07.457 に答える