NUnit:如何在[TearDown]中确定实际的[Test]是否成功?

时间:2013-11-05 15:51:31

标签: nunit

如何使用[TearDown][Test]中确定实际的NUnit是否成功?

如果特定[TearDown]未成功,我想在[Test]中打开(Selenium drived)Chrome浏览器窗口。如果成功,窗口可以关闭。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

这不是一种特别优雅的方法,但是通过使用method of attribute counting described here并在每次测试通过时递增计数器,您可以比较拆解时的结果。

免责声明:请注意,这仅适用于灯具中的所有测试都已运行(因为所有Test都已计算在内 - 例如,在个别Test案例中使用R#测试运行器将失败惨败。如果您在灯具中进行Ignore个一个或多个测试,它也会失败,因为计数将会消失。

[TestFixture]
public class UnitTest1
{
    private static int testsPassed = 0;

    [TearDown]
    public void TearDown()
    {
         // use reflection to find all tests in this fixture
        var totalTests = GetType()
            .GetMethods()
            .Count(method => method.GetCustomAttributes(
               typeof (TestAttribute), false).Count() > 0);

        if (testsPassed == totalTests)
        {
            // All good - can close the driver
            // seleniumDriver.Quit()
        }
    }

    [Test]
    public void FailedMethod()
    {
        Assert.AreEqual(1,2);
        Interlocked.Increment(ref testsPassed);
    }

    [Test]
    public void PassMethod()
    {
        Assert.AreEqual(1, 1);
        Interlocked.Increment(ref testsPassed);
    }
}

答案 1 :(得分:0)

一种选择是撰写custom NUnit EventListener addin。通过这种方式,您可以获得有关测试失败或成功的通知,并增加一些计数器。