Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果在循环c中找不到结果,如何使测试失败#_C#_Loops_Selenium_Testing - Fatal编程技术网

C# 如果在循环c中找不到结果,如何使测试失败#

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

我有一个for循环,在这个循环中,我查找与我作为参数输入的属性相匹配的属性。当它被找到时,它会通过,但当它没有被找到时,它会继续循环通过。我需要一种方法,如果找不到,可以让测试失败

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好的,我改了。