Automated tests 在编写UI测试时,如何测试长序列末尾的一件事情?

Automated tests 在编写UI测试时,如何测试长序列末尾的一件事情?,automated-tests,integration-testing,watin,Automated Tests,Integration Testing,Watin,我刚刚开始使用WatiN对我的ASP.NETMVC应用程序运行UI测试。这是一个很棒的工具,而且非常直观,但我发现自己在想,在一个单独的测试中应该做些什么 我发现很多人建议这些测试应该像单元测试一样对待,因此不应该对顺序或副作用抱有期望 当用户故事假设用户在完成我想要测试的活动之前已经完成了一系列步骤时,我遇到了问题 一些例子 用户必须注册、注销并输入错误的密码3次,以验证系统不会让他们使用正确的密码再次登录 用户必须注册、添加一些foo、添加一些bar、提交一个表单,允许他们在foo和bar中

我刚刚开始使用WatiN对我的ASP.NETMVC应用程序运行UI测试。这是一个很棒的工具,而且非常直观,但我发现自己在想,在一个单独的测试中应该做些什么

我发现很多人建议这些测试应该像单元测试一样对待,因此不应该对顺序或副作用抱有期望

当用户故事假设用户在完成我想要测试的活动之前已经完成了一系列步骤时,我遇到了问题

一些例子

  • 用户必须注册、注销并输入错误的密码3次,以验证系统不会让他们使用正确的密码再次登录

  • 用户必须注册、添加一些foo、添加一些bar、提交一个表单,允许他们在foo和bar中进行选择,并在另一个页面上查看他们提交的内容

  • 通过单元测试,我可以使用模拟来处理先决任务

    有哪些好的方法可以处理这个场景,这样我就可以避免编写经过相同先决步骤的单个测试,而每次都可以可靠地完成测试?

    嘿。
    我会将集成测试和故事验收测试分开

    检查-使用正确的方法创建LoginPage类,如loginAs(字符串用户名、字符串密码)、loginAsExpectingError(字符串用户名、字符串密码)。您可以编写其他类似的类-它为您的应用程序提供了自动化框架。您可以通过以下方式使用此功能:

    在集成级别上如果您提供了正确的凭据(登录),则检查应用程序组件是否正常工作;如果您提供了错误的凭据(登录预期错误),则检查应用程序组件是否正常工作

    在验收级别您可以使用LoginPage.loginAs()在验收测试中迈出第一步。第二种可能类似于MainPage.addSomeFoos()。然后是MainPage.addSomeBars()。然后是MainPage.logOut()


    如果单元测试通过,则运行集成测试,如果通过,则运行验收测试

    WatiN通过Browser.Page()支持PageObjects模式,您的页面继承自WatiN.Core.Page。欲了解更多信息,请访问