为什么我尝试调试NUNIT测试时获得此“ NUnit.Framework.SuccessException”?

时间:2018-12-28 11:06:26

标签: 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 Test Explorer中的绿色条)。

但是,如果我尝试调试此方法(在 Assert.Pass(“ PASSED”); 行上放置breackpoint),则它会给我这个异常,以尝试执行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

无论如何,该测试似乎已通过。但是为什么我要在调试模式下获得此异常?

2 个答案:

答案 0 :(得分:2)

Assert.Pass确实会引发异常,该异常使您可以向测试运行程序发送消息。您很少需要使用Assert.Pass,因为您不需要这样做即可通过测试。您可以改为允许测试完成。

很显然,您的真实测试应该断言某事,但是通常您会检查一个值是否符合预期。如果是这样,就不会有例外。

documentation ...

  

由于它会引发异常,因此仅允许测试返回就更有效

答案 1 :(得分:1)

阅读所用方法的文档始终是一个好主意:

/// <summary>
/// Throws a <see cref="SuccessException"/> with the message and arguments
/// that are passed in. This allows a test to be cut short, with a result
/// of success returned to NUnit.
/// </summary>

https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Assert.cs#L105