1

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

[TearDown]如果特别[Test]不成功,我想离开(Selenium 驱动的)Chrome 浏览器窗口打开。如果成功,则可以关闭窗口。

提前谢谢。

4

2 回答 2

0

One option is writing a custom NUnit EventListener addin. With this you could get notified about a test failing or succeeding and increment some counters.

于 2013-11-06T07:08:28.890 回答
0

这不是一种特别优雅的实现方式,但是通过使用此处描述的属性计数方法并在每次测试通过时递增计数器,您可以在拆卸时比较结果。

免责声明:请注意,这仅在夹具中的所有测试都运行时才有效(因为所有Tests 都被计算在内 - 例如,在个别情况下使用 R# 测试运行器Test将惨遭失败)。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);
    }
}
于 2013-11-05T19:43:03.843 回答