C# 断言测试失败就是成功
在nunit测试中,我们是否可以断言,如果测试在特定情况下失败,那么它就是一个通过(即,预期它会尝试并失败) 但在所有其他情况下都应该通过 问题是,测试可能在到达断言部分之前崩溃 我的意思是在C# 断言测试失败就是成功,c#,nunit,assert,assertions,C#,Nunit,Assert,Assertions,在nunit测试中,我们是否可以断言,如果测试在特定情况下失败,那么它就是一个通过(即,预期它会尝试并失败) 但在所有其他情况下都应该通过 问题是,测试可能在到达断言部分之前崩溃 我的意思是在 [TestSetup] void init() { if (condition==true) { Assert.That(this test fails); /*any feature to do this?*/ } } 如果考试可能会失败,并且在某些情况下被归类为通过,
[TestSetup]
void init()
{
if (condition==true)
{
Assert.That(this test fails); /*any feature to do this?*/
}
}
如果考试可能会失败,并且在某些情况下被归类为通过,那么这听起来是一个糟糕的考试。将其拆分为单独的测试,并使用清晰的方法名称详细说明它实现了什么 因此,与其有一个测试,并在其中有一个条件,不如将其拆分为每个场景。这样你就可以有一个场景,在这个场景中,它应该在以下情况下失败
// do stuff
bool success = DoStuff();
Assert.IsFalse(success);
你的问题有点难理解。你想强迫失败吗?就像这样
[TestSetup]
public void Init()
{
if (condition==true)
{
Assert.Fail();
}
}
如果您希望检查失败而不是原因,则应遵循Arran的建议,检查有关正在验证的工作的特定事实,例如方法的返回值。您还可以使用“Action”对象调用操作中的代码,并在异常时测试该操作。看看FluentAssertions,他们有很多例子
int number1 = 1;
int number0 = 0;
Action someAction = () => { int j = number1 / number0; };
someAction.ShouldThrow<DivideByZeroException>();
int number1=1;
整数0=0;
Action someAction=()=>{int j=number1/number0;};
someAction.ShouldThrow();
我真的不明白。您是否在测试设置中断言了某些内容?也许试着以身作则。同意。虽然你的答案不是我想要的,但我认为它比我想要的要好。谢谢。我正在寻找类似断言它失败并且不会导致失败的东西。无论如何,我认为我的行动计划是建立在一个动摇的基础上的,可能Arran的建议(检查上面的ANS)是最好的。谢谢