首页 > 解决方案 > xUnit:在失败的情况下如何运行附加代码

问题描述

我正在使用 xUnit 进行带有 Selenium 的 UI 测试。我喜欢截屏以防失败。是否可以在终止前做这样的最后工作?

标签: c#xunit

解决方案


不知道官方的方法。但我的想法是将你的断言包装到一些你可以处理失败的方法中

    [Fact]
    public void Test1()
    {
        int expected = 1;

        int result = 1 + 1;

        HandleAssert(() => Assert.Equal(expected, result));
    }

    [Fact]
    public void Test2()
    {
        int expected = 2;

        int result = 1 + 1;

        HandleAssert(() => Assert.Equal(expected, result));
    }

    private void HandleAssert(Action assert)
    {
        try
        {
            assert.Invoke();
        }
        catch(Exception e)
        {
            //make screenshot
            //just throw for preserve stacktrace
            throw;
        }
    }

推荐阅读