【发布时间】:2017-10-20 13:42:16
【问题描述】:
我正在尝试寻找在生产代码中使用断言的最佳实践,但我对我发现的信息如此之少感到惊讶。
首先,在生产代码中是否可以使用断言语句?
第二,我读到 .NET 的内置 Debug.Assert 本质上会自动为生产代码禁用自身,并且仅在开发环境中实际运行。这是真的吗?NUnit 是否也内置了这个功能?
例如,如果我在生产代码中有以下内容,断言会被忽略吗?
var sortedActuals = actuals.OrderByDescending(a =>
{
Assert.That(a.GLPeriodDateTime, Is.Not.Null, "GLPeriodDateTime was null when it should not be");
return a.GLPeriodDateTime.Value;
})
【问题讨论】:
-
你试过了吗?结果如何?
-
我不会在生产代码中使用 NUnit 断言。如果您想检查,您可以提出自己的异常或使用代码合同。在这种情况下,
a的类看起来应该确保GLPeriodDateTime永远不会为空。