如果操作数不合适,我有一个运算符会抛出。(具体来说,它在基于 int 的类上进行十进制乘法 - 如果有意义(例如 2 * 0.5)是允许的,但如果结果不是整数则抛出。(例如 2*0.3))
看来我不能使用 nUNit 的 Assert.Throws<>() 来测试它,因为我认为调用它的每一种方式都会给我一个编译器错误:
Assert.Throws<InvalidOperationException>(originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => dummy = originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(() => dummy = originalValue * badDecimalMultiplier);
- 第一个尝试将操作结果作为参数传递给 Throws(),但由于 Throws 仅接受 TestDelegate 而失败。
- 第二个失败,出现“只有赋值、调用、递增、递减和新对象表达式可以用作语句”错误。
- 第三个因“Delegate 'NUnit.Framework.TestDelegate' 不接受 1 个参数”而失败。
- 第四个(以及我能找到的所有变体)不会让您分配给未声明的变量(真的不足为奇)
所以我想我必须手动捕获异常并测试它?那或者定义一个实际的方法来保存操作,这似乎并没有好多少。
我错过了什么吗?如果没有,我能否得到确认,以便下一个尝试查找此问题的人有答案。