C#单元测试:使用IEnumerable方法中的变量

时间:2015-12-05 01:02:27

标签: c# unit-testing foreach

我已经改编了一个使用页面对象模式的C#测试框架。基本上,测试导航到站点,使用实用程序类中的值填写联系表单,提交表单然后关闭浏览器。

此测试框架中有(3)个类来运行测试:第一个是测试用例类,第二个是Page Class,最后是Utility类。

实用程序类有一个IEnumerable方法,列出美国状态(下面的代码示例)。我的最终目标是这样:每个测试执行都将从IEnumerable方法中选择一个状态值(从' Alabama'以' Wyoming'结尾)。我已在实用程序类中使用Dictionary Structures来查找生成的每个状态值的有效城市和邮政编码值。例如,如果生成的状态是“阿拉巴马州”,那么来自公用事业类的有效城市和邮政编码将是“亨茨维尔'和' 35801'。最后,有一种随机状态生成器方法可生成随机状态值。但是,我想停止使用随机状态生成器方法并使用IEnumerable方法中的状态值。

        public static IEnumerable<string> ListStates()
        {
            var lst = new List<string>();
            lst.Add("Alabama");
            lst.Add("Alaska");
...
            return lst;
        }

在Test Case Class中,为ListStates()方法中的每个状态执行每个循环(参见下面的代码)

[TestMethod]
public void TestMethod1()
{
    var states = GenerateCityStateZip.ListStates();
    foreach (var state in states)
    {
        Browser.Open();
        Pages.ContactUs.Goto();
        Pages.ContactUs.InputContactDetails();
        Browser.Quit();
    }
}

最后,我在页面类中有方法:(1)在实用程序类中调用generate random state函数;(2)关联对应于此状态的有效城市和邮政编码。

// Generate Random State using GenerateCityStateZip Class
public static string getRandomState()
{
    string randomState = GenerateCityStateZip.GenRandomState();
    return randomState;
}
public string _RandomState = getRandomState();

// Generate City using GenerateCityStateZip Class
public static string getCity(string state)
{
    string city = GenerateCityStateZip.GetCity(state);
    return city;
}

// Generate Zip using GenerateCityStateZip Class
public static string getZip(string state)
{
    string zip = GenerateCityStateZip.GetZip(state);
    return zip;
}

问题:在Page Class中,我想避免对状态值使用随机状态生成器方法。相反,我想使用Test Class使用的IEnumerable方法。有人可以建议我需要在页面类中包含的代码来实现这一目标吗?感谢。

0 个答案:

没有答案