我的库有一些内在逻辑。在我使用这样的表达式来检查内部逻辑的输入数据之前:
if (value < 0)
throw new ArgumentOutOfRangeException("value");
但是我的库非常具有性能感,所以现在我只使用这样的表达式来检查用户输入。 我使用Debug.Assert检查内部代码的内部输入,以便在发布中保存几个百分比的性能。
但是现在,我检查无效输入的内部代码的单元测试不起作用。使用Debug.Assert,没有任何异常。 那么如何在我的单元测试中检查Debug.Assert?
答案 0 :(得分:1)
嗯,它不能,因为你实际上没有任何类型的检查,你的单元测试可能会对程序的“Release”版本起作用,当处于发布模式时System.Diagnostics.Debug
中的所有函数班级成为NO-OPs,不做任何事情。
您是否考虑过使用CodeContracts来证明您的代码只接受有效输入?它应该像Debug.Assert
一样工作,因此代码将不会存在于发布版本中,但您可以证明您的代码都没有传递无效值。