为什么我尝试调试 NUNIT 测试时会收到此“NUnit.Framework.SuccessException”?

And*_*ili 3 .net c# nunit unit-testing

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

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

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

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

    }
}
Run Code Online (Sandbox Code Playgroud)

目前仅包含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
Run Code Online (Sandbox Code Playgroud)

无论如何,测试似乎已经通过了。但为什么我在调试模式下会出现此异常?

Fen*_*ton 7

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

显然,您的实际测试应该断言某些内容,但通常您会检查一个值是否符合预期。到时候,也不会有例外。

文档中...

由于它会导致抛出异常,因此简单地允许测试返回会更有效