enum返回后的不可达代码

本文关键字:代码 返回 enum | 更新日期: 2023-09-27 18:03:35

嗨,我有一个emun,它将通过if语句运行test。

public enum Test_Criteria
    {
        Pass,
        Warning,
        Fail
    }

运行if语句后

if (driver.Url.Contains("Postcode.aspx?type=billing&mode=guest"))
        {
            return Test_Criteria.Pass;
        }
        else
        {
            return Test_Criteria.Fail;  
        }

我得到无法到达的代码进行下一个测试直接在这里

driver.FindElement(By.Id("Pagecontent_TextBoxPostCode")).SendKeys("#####");

允许程序在返回后继续执行代码的最明智的方法是什么?由于

enum返回后的不可达代码

您在ifelse子句中都返回,这就是为什么您的代码不会到达if语句后的下一行。在任何情况下,无论检查是否失败,您的代码都将从该方法返回。这就是为什么你得到错误/警告。

您的问题是您正在从条件的两个分支返回。如果你想执行进一步的代码,你不应该在其中任何一个返回。

为了测试多个条件,您可以尝试这样做:(我假设这里失败的条件立即停止测试)

var result = Test_Criteria.Pass;
if ( */fail condition*/ )
{
    return Test_Criteria.Fail;  
}
if ( */another fail condition*/ )
{
    return Test_Criteria.Fail;  
}
if( */warning condition*/ )
{
    result = Test_Criteria.Warning;
}
else if( */another warning condition*/ )
{
    result = Test_Criteria.Warning;
}
return result;

您有两个执行路径,每个路径都从您的函数返回,因此在if-else块之后确实不可能继续。

试试这个:

var urlContains = driver.Url.Contains("Postcode.aspx?type=billing&mode=guest"));
var result = urlContains ? Test_Critera.Pass : Test_Criteria.Fail;
driver.FindElement(By.Id("Pagecontent_TextBoxPostCode")).SendKeys("#####");
//the rest of your code
return result;