NUnit和忽略失败测试的能力

时间:2017-09-19 18:28:34

标签: c# exception automated-tests nunit assertions

我正在开发一个项目,我必须在C#中使用NUnit中的软断言。 我需要实现一个功能,该功能表明如果测试失败,请转到下一个测试而不显示异常,但请注意此测试失败。 我知道使用多个断言是不可取的,但这是必要的,因为我得到了一个表格,其中带有姓氏的字段可能会失败,但接下来的测试是独立的,应该仍然运行。

public class SoftAssertionTest
{
    public static void AreEqual(object expected, object actual)
    {
        try
        {
            Assert.AreEqual(expected, actual);
        }
        catch (Exception e)
        {
            //Catch exception but remember that test failed and got to the 
            //next
        }
    }
}

预期结果是所有测试都在没有异常的情况下运行,但最终结果显示失败状态。

[TestFixture]
public class TestClass
{
    [Test]
    public static void Test()
    {
        SoftAssertionTest.AreEqual(1, 2);
        SoftAssertionTest.AreEqual(3, 4);
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

NUnit 3有Assert.Warn如果您只想警告失败,Assert.Multiple如果您想要运行多个断言并且如果任何单个断言失败,则测试失败,但要确保所有断言断言运行。

答案 1 :(得分:0)

尝试SoftAssertion

      SoftAssert softAssert = new SoftAssert();

      softAssert.True(false);
      softAssert.False(true);
      softAssert.NotNull(null);

      softAssert.VerifyAll();