Bor*_*ris 8 c# nunit division zero dividebyzeroexception
通过NUnit运行以下C#代码
Test.ControllerTest.TestSanity: Expected: `<System.DivideByZeroException>` But was: null
Run Code Online (Sandbox Code Playgroud)
因此要么不抛出DivideByZeroException,要么NUnit不捕获它.与这个问题类似,但他得到的答案,似乎并不适合我.这是使用NUnit 2.5.5.10112和.NET 4.0.30319.
[Test]
public void TestSanity()
{
Assert.Throws<DivideByZeroException>(new TestDelegate(() => DivideByZero()));
}
private void DivideByZero()
{
// Parse "0" to make sure to get an error at run time, not compile time.
var a = (1 / Double.Parse("0"));
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jor*_*ren 21
没有异常被抛出.1/0.0只会给你double.PositiveInfinity.这就是IEEE 754标准规定的内容,C#(以及基本上所有其他系统)都遵循.
如果您想要浮点除法代码中的异常,请明确检查零,并自行抛出.如果您只想查看DivideByZeroException将获得什么,请手动抛出或将整数除以整数零.
来自MSDN:
尝试将整数或十进制值除以零时引发的异常.
您正在处理的double,不是任何整数类型(int等)或decimal.double即使在checked上下文中也不会抛出异常.你得到+ INF.
如果要评估为整数数学(并获得异常),请使用:
var a = (1 / int.Parse("0"));
Run Code Online (Sandbox Code Playgroud)