【发布时间】:2013-02-23 08:28:46
【问题描述】:
我今天遇到了一个问题,我不小心被零除,但没有抛出异常。当我使用调试器时,我在调试器中看到了“NaN”。当我尝试用 NUnit 重新创建这个场景时,Assert 说我正在返回“Infinity”。不能完全让调试器显示 NaN,但我只是想知道为什么在这种情况下没有抛出错误?我花了很长时间才找到这个问题,我会认为应该抛出异常?
这里是测试代码:
public class DivideByZero {
private int TotalQaOneToFour;
private int TotalGrade = 10;
public DivideByZero(int TotalQaOneToFour) {
this.TotalQaOneToFour = TotalQaOneToFour;
}
public Double QualityReportAverageRounded {
get {
return Math.Round((double)TotalGrade / TotalQaOneToFour, 2);
}
}
}
[TestFixture]
public class DivideByZeroTest {
[Test]
public void TestThatDivideByZeroThrowsWhenUsingMathRound() {
var dbz = new DivideByZero(0);
Assert.AreEqual(0, dbz.QualityReportAverageRounded);
}
}
这是 NUnit 输出:
测试'DivideByZeroTest.TestThatDivideByZeroThrowsWhenUsingMathRound' 失败:
预期:0
但是是:无限
除零.cs(33,0):在 DivideByZeroTest.TestThatDivideByZeroThrowsWhenUsingMathRound()0 次通过,1 次失败,0 次跳过,耗时 0.41 秒 (NUnit 2.6.1)。
【问题讨论】:
-
如果除数为 0,您始终可以进行覆盖,该覆盖会引发异常
标签: c#