断言测试失败是成功的

时间:2013-04-26 16:25:58

标签: c# nunit assert assertions

在一个nunit测试中,我们可以断言如果测试在某种情况下失败那么它就是一个传递(即预期会尝试失败)。

但它应该在所有其他情况下通过。

事情是测试可以在它到达断言部分之前崩溃。

我的意思是

[TestSetup]
void init()
{
    if (condition==true)
    {
    Assert.That(this test fails); /*any feature to do this?*/
    }
}

3 个答案:

答案 0 :(得分:3)

如果测试失败并且在某些情况下它被归类为通行证,那么这听起来不错。将其拆分为单独的测试,并使用明确的方法名称详细说明其实现的目标。

因此,不要进行一次测试并在其中包含条件,而是将其拆分为每个场景。这样你可以拥有一个场景,它应该在

之类的东西下失败
// do stuff
bool success = DoStuff();
Assert.IsFalse(success);

答案 1 :(得分:0)

理解你的问题有点难。您是否希望Assert.Fail()强制失败?像这样......

[TestSetup]
public void Init()
{
    if (condition==true)
    {
    Assert.Fail();
    }
}

如果您想检查而不是原因,那么您应该遵循Arran的建议并检查您正在验证的工作的具体事实 - 例如作为方法的返回值。

答案 2 :(得分:0)

您还可以使用“Action”对象来调用操作中的代码,并测试该操作是否为异常。看看FluentAssertions,他们有很多例子。

    int number1 = 1;
    int number0 = 0;
    Action someAction = () => { int j = number1 / number0; };
    someAction.ShouldThrow<DivideByZeroException>();
相关问题