c# - 为什么我在尝试调试 NUNIT 测试时获得此 "NUnit.Framework.SuccessException"?

标签 c# .net unit-testing nunit

我是 NUNIT 的新手,我遇到了以下奇怪的行为。

在我的测试项目中,我有这个测试类:

namespace Tests
{
    public class Tests
    {
        [SetUp]
        public void Setup()
        {
        }

        [Test]
        public void Test1()
        {
            Assert.Pass("PASSED");
        }

    }
}

目前只包含 Test1() 方法,每次执行时都应该通过该方法(因为我使用的是 Assert.Pass() 方法。

如果我运行这个测试它工作正常并且测试通过(Visual Studio 测试资源管理器中的绿色条)。

但是如果我尝试调试此方法(在 Assert.Pass("PASSED"); 行上放置一个断点,它会给我这个尝试执行 Pass() 方法的异常:

Exception thrown: 'NUnit.Framework.SuccessException' in nunit.framework.dll
An exception of type 'NUnit.Framework.SuccessException' occurred in nunit.framework.dll but was not handled in user code
PASSED

反正测试好像是通过了。但是为什么我在 Debug模式下会得到这个异常?

最佳答案

Assert.Pass 确实抛出一个异常,它允许您向测试运行器发送消息。您很少需要使用Assert.Pass,因为您不需要为了测试通过而这样做。您可以让测试完成。

显然,您的实际测试应该断言某事,但通常您会检查一个值是否符合预期。到时候也不异常(exception)。

来自documentation ...

Since it causes an exception to be thrown, it is more efficient to simply allow the test to return

关于c# - 为什么我在尝试调试 NUNIT 测试时获得此 "NUnit.Framework.SuccessException"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53957539/

相关文章:

c# - 如何从 C# 调用具有 char[] 作为 OUT 参数的非托管函数?

java - 在 junit 测试期间禁用记录器?

C# Caliburn.Micro 多选

c# - 重置在组框中以编程方式创建的标签的值

c# - 使用 linq 查找索引位置,但要考虑依赖于值的关系

c# - 如果存在则从列中选择,如果不存在值为 NULL

c# - 使用填充将字节数组转换为 int 数组

c# - 如何在没有大条件的情况下创建兼容SQL Server和SQLite的DbCommand?

javascript - 通过实习生对浏览器 CommonJS 模块进行单元测试

java - 如何在 Maven 构建失败时显示自定义消息