Debug.Assert in exception unit test



我的库有一些内在逻辑。在我使用这样的表达式来检查我的内在逻辑的输入数据之前:

if (value < 0)
    throw new ArgumentOutOfRangeException("value");

但是我的库非常具有性能感知能力,所以现在我只对我的 API 使用这样的表达式来检查用户输入。我的内部代码的内部输入我使用 Debug.Assert 检查以在发布中节省百分之几的性能。

但是现在,我对检查无效输入的内部代码的单元测试不起作用。有了Debug.Assert,就没有任何例外了。那么如何在我的单元测试中检查 Debug.Assert呢?

好吧,它不能,因为你实际上没有任何种类的检查,你的单元测试可能针对程序的"发布"版本工作,当在发布模式下,System.Diagnostics.Debug类中的所有函数都变成NO-OP并且不做任何事情。

您是否考虑过使用 CodeContract 使您的代码可证明只接受有效的输入?它应该像Debug.Assert一样工作,因此代码不会存在于发布版本中,但您可以证明您的代码都没有传递无效值。

最新更新