运行循环遍历多个页面的编码UI TestMethod

时间:2012-05-18 13:33:44

标签: c# coded-ui-tests

我有一个TestMethod,它将遍历包含特定用户控件的所有页面。我遇到的问题是,当我的断言失败时,我无法在错误消息或堆栈跟踪中看到它失败的页面。有没有办法自定义或添加其他参数以显示在测试结果详细信息中?

不是真的需要它,但这是我的代码......

[TestMethod]
public void uiTestCourseListingPages() {
    UiBrowserWindow uiBrowserWindow = new UiBrowserWindow();
    string controlType = "~/_control/course/courseList.ascx";
    var request = WebRequest.Create(Utility.GET_PAGES_WITH_CONTROL_URL + controlType);
    request.ContentType = "application/json; charset=utf-8";

    using(var response = request.GetResponse()) {
        using(var streamReader = new StreamReader(response.GetResponseStream())) {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            List<PagesWithControl> pagesWithControl = serializer.Deserialize<List<PagesWithControl>>(streamReader.ReadToEnd());
            pagesWithControl.ForEach(x => {
                // launch browser
                uiBrowserWindow.launchUrl(x.key);
                // setup assertions
                Assert.AreEqual(
                     uiBrowserWindow.uiHtmlDocument.searchHtmlElementByAttributeValues<HtmlDiv>(new Dictionary<string, string> {
                        {HtmlDiv.PropertyNames.Class, "footer"}
                    }).Class,
                    "footer"
                );
            });
        }
    }
}

3 个答案:

答案 0 :(得分:0)

有一个重载的Assert.AreEqual(对象,对象,字符串)。如果您将URL放入将显示在测试结果中的字符串中。

答案 1 :(得分:0)

CodedUI Test失败时,它会在发生故障时保留桌面的图像。您可以检查是否创建了错误图像。

默认情况下,它会在TestResults文件夹中创建,默认情况下位于Project文件夹中。如果您的测试作为Team BuildMTM的一部分运行,则可以通过编辑测试设置来更改默认的TestResults路径:

答案 2 :(得分:0)

记录错误的最佳方法是尝试..捕捉它们。然后将它们添加到字符串中,然后在测试结束时断言字符串是否为空。

这种方式可以为错误,位置等提供更多细节。

以下视频介绍了如何:

强大的代码,继续出错 http://www.microsoft.com/en-gb/showcase/details.aspx?uuid=65967d59-798b-47ce-9743-534d1c106657