gpt4 book ai didi

c# - 生产代码中的 NUnit 断言

转载 作者:行者123 更新时间:2023-11-30 13:35:42 26 4
gpt4 key购买 nike

我正在尝试寻找在生产代码中使用断言的最佳实践,但令我惊讶的是我发现的信息如此之少。

首先,在生产代码中使用 assert 语句是否通常可以接受?

其次,我读到用于 .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 断言必须在发布版本中起作用,因为发布版本必须经过测试。出于多种原因,您不应在生产代码中包含 NUnit 断言。

  1. NUnit 断言(以及 Debug.Assert)旨在检测您的 代码中的问题。提供给您的应用程序的错误数据是正常应用程序流程的一部分,应由您的生产代码检测和处理。

  2. 断言旨在在 NUnit 的控制下运行,NUnit 知道结果的含义。例如,一些断言在失败时会抛出异常,而另一些则不会。您需要知道其中的区别才能有效地使用它。

  3. 还有其他行之有效的处理不良数据的方法,包括异常处理、自定义错误消息等。

  4. 很可能,您正在尝试使用与 NUnit 测试分开的 NUnit 约束语法。这是一个很好的语法,一些人要求我们将它拆分为一个单独的包。如果我们这样做了,您就可以使用它,但不幸的是我们还没有。

关于c# - 生产代码中的 NUnit 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com