【问题标题】:Run adiitional cleanup function on test failure (when Assertion Fails)在测试失败时运行附加清理功能(当断言失败时)
【发布时间】:2016-01-01 00:17:17
【问题描述】:

我目前有一个使用 Nunit 和 C# 以及 Selenium WebDriver 使用断言的测试套件,有没有办法让函数仅在断言失败时运行。通常这将继续进行拆卸,然后继续进行下一个测试,但是如果上一个测试失败,我需要重置测试中的某些参数。最好的方法是什么?

【问题讨论】:

  • 当您的问题与特定代码无关时,您可以尝试programmers.stackexchange.com/help/on-topic
  • 如果测试状态失败,您可以通过TestContext.CurrentContext.Result.Status检查拆解并运行您想要的任何方法。

标签: c# unit-testing selenium nunit assert


【解决方案1】:

您可以扩展 TestActionAttribute 来处理这个问题。在AfterTest()覆盖中,可以检查TestContext.CurrentContext.Result.Status == TestStatus.Failed并进行适当处理。例如,

public class ClassTest
{
    [Test]
    [OnFailure] // << your custom attribute here
    public void MyTest()
    {
        Assert.Fail("test failed");
    }
}

[AttributeUsage(AttributeTargets.Method)]
public class OnFailureAttribute : TestActionAttribute
{
    public override void AfterTest(TestDetails testDetails)
    {
        if(TestContext.CurrentContext.Result.Status == TestStatus.Failed)
        {
            // TODO: your error handling
            Console.WriteLine(testDetails.FullName + " failed");
        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2015-06-27
    • 2018-03-17
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多