Debug.Assert在异常单元测试中

时间:2016-03-07 22:01:20

标签: c# unit-testing

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

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

但是我的库非常具有性能感,所以现在我只使用这样的表达式来检查用户输入。 我使用Debug.Assert检查内部代码的内部输入,以便在发布中保存几个百分比的性能。

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

1 个答案:

答案 0 :(得分:1)

嗯,它不能,因为你实际上没有任何类型的检查,你的单元测试可能会对程序的“Release”版本起作用,当处于发布模式时System.Diagnostics.Debug中的所有函数班级成为NO-OPs,不做任何事情。

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