首先,如果您想像最终用户一样测试web,那么您的应用程序是否使用ASP.NET MVC构建可能并不重要。(这只意味着您正在寻找我假设的.NET UI测试框架。)
我不知道为什么硒WebDriver本身没有被你列出,这将是我推荐的。因为它主宰着市场,在那里你可以得到所有的支持和资源。这是一个高度活跃的开源项目,许多其他框架都依赖这个项目。Watin和CodedUI是可供选择的,而Coypu和TestStack.Seleno只是围绕Selenium的高级框架。它支持Java、.NET、Ruby、JavaScript绑定,可以轻松地将其他语言的代码移植到C#中。
- 瓦廷。该项目不活动。在Selenium WebDriver刚刚发布的日子里,它们都很受欢迎,您可能要做出一个艰难的决定。但是现在已经不是了,Watin已经三年没有发布任何东西了,现在不应该被认为是你的选择之一。当时,IE支持9,Firefox支持4,Chrome支持11。
- CodeUI。不推荐使用。它的优点是它支持的不仅仅是web,它是由Microsoft自己创建的,并且在Visual中有很强的绑定。但是它不是开源的,一个资源有限、功能有限的小社区更多地关注Windows应用程序。
- 共形是一个开源框架,包含Selenium WebDriver和Watin (IE仅在Coypu中)。这在某种程度上更像水豚,但对.NET来说,我个人觉得这个想法很棒。
- TestStack.Seleno也是一个很好的选择,它可以创建某种DSL来隐藏Selenium WebDriver命令,并提供页面对象,这在web测试项目中是必不可少的。此外,它可以与您的ASP.NET MVC应用程序紧密结合。但这些都是硒水平以上的东西。它帮助您编写代码Selenium,您可能无论如何都希望实现它。
因此,我认为Coypu和TestStack.Seleno值得一看,但要小心。
- 这些框架依赖Selenium,这可能是一个限制。例如,如果Selenium中存在严重的bug,您的测试可能会中断。然后Coypu开发人员需要先在Selenium中修复它,然后更新Coypu来解决这个问题。根据项目的活动情况,时间可能会有所不同。在此过程中,可能会引入更多只影响Coypu用户的bug。您并不真正需要DSL/Page对象,但是要实现自己独特的方法来支持测试您的应用程序。
- 尽管它们是开源的,但它们可能没有Selenium那么大的社区。在浏览器自动化级别以上发生的任何事情(即编写的代码Coypu或TestStack.Seleno)对您来说都很难获得帮助。例如,还有大量其他框架包装Selenium,如Capybara、Watir WebDriver等,人们很难在StackOverflow上很快得到答案,因为使用它们的人不多。
- 没有人知道这些项目能持续多久。还有另一个名为.NET UI测试框架的白色,它是一个很好的测试Web/WinForm/Silverlight应用程序的项目,但被TestStack (现在称为TestStack.White )所反对和接管。你可以想象,如果一个人开发了一个大型测试项目使用怀特一段时间,他们可能会陷入麻烦。
- DSL和页面对象是你自己应该掌握的东西。对于一些开发人员来说,实现自己的程序比使用第三方库更好/更可靠,因为他们完全控制了隐藏的内容。
Outro
评估框架的最佳方法是使用每个框架为您的应用程序创建一个演示。然后你可能会有一种偏好,可以帮助你做出决定。
一般来说,我的建议是:要使web自动化,选项应该是使用Selenium WebDriver,而不是Watin或CodedUI。对于高级别的支持框架,我个人认为没有(即使用纯Selenium WebDriver库,并在测试项目中编写自己的支持类),但是如果您喜欢,可以考虑Coypu和TestStack.Seleno。