如果条件导致条件被忽略,则抛出异常

时间:2013-06-19 06:24:25

标签: c# asp.net unit-testing nunit selenium-webdriver

在使用以下简单代码的单元测试项目中,

bool isRightType = true;
if(isRightType == false)
{
    const string msg = "Für diesen Control-Typ wird die falsche Basisklasse verwendet!";
    throw new Exception(msg);
}

无法识别if条件,并且在不考虑if条件的情况下抛出异常。

仅在配置了Nunit的单元测试项目中发生这种情况。 在控制台应用程序中尝试相同的代码时,它运行良好。 是否有任何机构面临同样的问题,并找到了解决方案?

其他信息: 测试使用基于NUnit的Selenium UI测试运行。 我在代码中遗漏的是,在包含异常的if条件之前,调用了另一个if条件。 (任何条件都会导致错误) 如果我将if条件移到低于该条件的条件下,它将正常工作。

这是完整的方法:

public IEnumerable<IWebElement> FindSelf()
    {
         //Keep existing instance
        if (this.self != null)
        {
            return this.self;
        }

        bool isRightType = this is YesNoRadioButtonList || this is RadioButtonList;

        if(!isRightType)
        {
            throw new Exception();
        }

        try
        {
            self = this.selenium.FindElementsByName(selector);
        }
        catch (NoSuchElementException)
        {

            try
            {
                self = this.selenium.FindElementsByCss(selector);
            }
            catch (Exception)
            {
                return null;

            }

        }
        return self;
    }

1 个答案:

答案 0 :(得分:0)

bool isRightType = true;
if(isRightType == false)
{
    const string msg = "Für diesen Control-Typ wird die falsche Basisklasse verwendet!";
    throw new Exception(msg);
}

你将isRightType硬编码为true,然后立即测试为false。 if语句没有执行路径为true并执行。