在一个nunit测试中,我们可以断言如果测试在某种情况下失败那么它就是一个传递(即预期会尝试失败)。
但它应该在所有其他情况下通过。
事情是测试可以在它到达断言部分之前崩溃。
我的意思是
[TestSetup]
void init()
{
if (condition==true)
{
Assert.That(this test fails); /*any feature to do this?*/
}
}
答案 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>();