0
我有一些库的内部逻辑。之前我用这样的表述来检查我的内在逻辑的输入数据:Debug.Assert在异常单元测试中
if (value < 0)
throw new ArgumentOutOfRangeException("value");
但我的图书馆十分性能sensetive,所以现在我使用这样的表达式只为我的API来检查用户输入。 我的内部代码的内部输入与Debug.Assert一起检查,以在发布中节省几个性能。
但现在,我的内部代码检查无效输入的单元测试不起作用。通过Debug.Assert,没有任何异常。 那么如何在我的单元测试中检查Debug.Assert?
嗯,它不能因为你实际上没有任何形式的检查。你有没有考虑过使用[CodeContracts](https://github.com/Microsoft/CodeContracts)来使你的代码可以只采取有效的输入?它应该像Debug.Assert一样工作,所以代码在发布版本中不会存在,但是你可以证明你的代码没有传入一个无效的值。 –
当我说“你实际上没有任何形式的检查”时,我的意思是你的单元测试可能与程序的“发布”版本工作,当处于发布模式时,System.Diagnostics.Debug类中的所有函数成为NO-OP,不做任何事情。 –
@ScottChamberlain非常感谢!代码合同正是我所需要的! –