今天我遇到了一个问题,当我不小心除以零时,却没有抛出异常。当我使用调试器查看时,调试器中显示的是“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
实际结果:无穷大
在 DivideByZero.cs(33,0):
DivideByZeroTest.TestThatDivideByZeroThrowsWhenUsingMathRound()共有 1 个测试失败,0 个测试通过,0 个测试跳过,总计用时 0.41 秒 (NUnit 2.6.1)。