C# 如果在循环c中找不到结果,如何使测试失败#
我有一个for循环,在这个循环中,我查找与我作为参数输入的属性相匹配的属性。当它被找到时,它会通过,但当它没有被找到时,它会继续循环通过。我需要一种方法,如果找不到,可以让测试失败C# 如果在循环c中找不到结果,如何使测试失败#,c#,loops,selenium,testing,C#,Loops,Selenium,Testing,我有一个for循环,在这个循环中,我查找与我作为参数输入的属性相匹配的属性。当它被找到时,它会通过,但当它没有被找到时,它会继续循环通过。我需要一种方法,如果找不到,可以让测试失败 foreach (IWebElement link in links) { string text = link.GetAttribute("alt"); if (text == transportMode) { Assert.AreEqual(text, transportM
foreach (IWebElement link in links)
{
string text = link.GetAttribute("alt");
if (text == transportMode)
{
Assert.AreEqual(text, transportMode);
}
}
您没有提到这是NUnit还是MSTest,但在这两种情况下
Assert.Fail("Error message");
测试失败您没有提到这是NUnit还是MSTest,但在这两种情况下
Assert.Fail("Error message");
测试失败无需在循环内断言(因为
if
语句的检查结果完全相同)。如果你找到了,就跳出测试。否则,在测试结束时失败:
foreach (IWebElement link in links)
{
string text = link.GetAttribute("alt");
if (text == transportMode)
{
return;
}
}
Assert.Fail("not found");
您可能想想出一条比我使用的更聪明的消息。无需在循环内断言(因为您的
if
语句的检查结果完全相同)。如果你找到了,就跳出测试。否则,在测试结束时失败:
foreach (IWebElement link in links)
{
string text = link.GetAttribute("alt");
if (text == transportMode)
{
return;
}
}
Assert.Fail("not found");
您可能想想出一个比我使用的更聪明的消息。使用LINQ非常简单:
Assert.IsTrue(links.Select(l => l.GetAttribute("alt")).Contains(transportMode));
使用LINQ非常简单:
Assert.IsTrue(links.Select(l => l.GetAttribute("alt")).Contains(transportMode));
当条件不满足时,您当然可以只
break
或throw
?集合中的每个成员都需要匹配,还是只需要一个?如果值与if
子句不相等,则跳过断言。不要测试然后断言,只要断言。当条件不满足时,当然可以只break
或throw
?集合中的每个成员都需要匹配,还是只需要一个?如果值与if
子句不相等,则跳过断言。不要测试然后断言,只要断言。谢谢。这就解决了我的问题。OP在if语句中使用了大括号。请不要以身作则鼓励不要使用它们。@jibbs好的,我改了。谢谢。这就解决了我的问题。OP在if语句中使用了大括号。请不要以身作则鼓励不要使用它们。@jibbs好的,我改了。