Nunit动作属性:如果有任何异常,请不要运行AfterTest方法

时间:2016-07-25 16:04:44

标签: c# unit-testing exception nunit

如果testmethod中有任何异常,如何防止运行AfterTest方法?

public class TestAttribute : Attribute, ITestAction
    {
        public void BeforeTest(TestDetails testDetails)
        {
            // Run before test
            // ....
        }

        public void AfterTest(TestDetails testDetails)
        {
            // don't run it if there is any exception
            // how to check whether an exception is thrown from Nunit

            // ...
        }

        public ActionTargets Targets { get; private set; }
    }

[Test][TestAttribute]
public void TestMthod()
{
   throw new Exception("test exception");
}

有没有办法知道在AfterTest方法中是抛出异常还是断言失败?

注意:我对异常的细节不感兴趣。

1 个答案:

答案 0 :(得分:0)

如果在TestMthod中抛出异常,那么结果将是错误而不是失败,因此我相信您当前的代码块,您可以简单地利用这样的测试上下文:

    public void AfterTest(TestDetails testDetails)
    {
        if(TestContext.CurrentContext.Result.State == TestState.Error)
        {
            return;   
        } 
        // don't run it if there is any exception
        // how to check whether an exception is thrown from Nunit

        // ...
    }

如果您有兴趣了解实际结果字符串是什么,我认为您需要使用插件并实现eventlistener。

希望这有帮助