2012-05-03 99 views
2

我觉得自己陷入了这场政治/宗教的斗争。从我所做的研究中,我发现很多人都非常强烈地相信UI测试通过单元测试是愚蠢的,而且真正的人可以做得更好。我同意。ASP.NET MVC3 UI单元测试

不过,看起来上级让我单元测试用户界面。 (这已经很奇怪了,因为他们以前告诉过我我只需要写一个测试计划而不是真正的测试)。尽我所能,我对单元测试并不是很熟悉。我试图使用最小起订量,但我找到的所有教程都使用存储库而不是服务,我正在围绕服务构建我的Web应用程序。

举个例子这里(的一部分)服务:

public class ProductService : Service<Product, EntitiesDbContext> 
    { 
     ... 
     public Product GetProduct(int id) 
     { 
      return All().FirstOrDefault(p => p.ProductId == id); 
     } 
     ... 
    } 

我的假设是,我需要建立让我们说,一个新的产品使用起订量,然后有人验证硬编码输入使用我的模型。我不知道如何做到这一点。

测试UI是我的大部分工作作为网站通过形式在很大程度上依赖于用户输入。再次,我发现用单元测试进行测试非常愚蠢,因为我的模型非常严格,只允许某些输入。

我的问题: 我怎么会去使用MOQ或可能另一个测试框架测试表单输入? 我听说有些程序可以跟踪你的行为并复制它们,但是我找不到它们,我也相信这样的技术会花钱。

回答

1

Visual Studio 2010 Ultimate拥有一种称为编码UI测试的功能。基本上,您可以在Internet Explorer中记录您的操作,该操作将转换为添加断言的C#代码,然后在不同的浏览器中重播操作。

然而,这是很难测试针对数据库支持的Web应用程序,因为你很难找出哪些是新添加的行。为了简化问题,您可能需要设置一个样本数据库,在按顺序运行测试套件之前将其重置为初始状态。

查看关于如何使用编码UI测试的各种TechEd视频。例如。 http://www.youtube.com/watch?v=rZ8Q5EJ2bQM

1

你测试你的UI动作或者是你测试的实际UI。

如果要测试的操作和他们发送什么样的数据视图,然后做使用类似NUnit单元测试,xUnit等,并使用像MOQRhino Mocks一个MOQ框架是做正确的事。

如果你请使用类似于Selenium的自动化测试框架将是合适的工具

1

您也可以尝试Ivonna(http://ivonna.biz测试实际UI(由Web服务器返回的HTML) )进行MVC测试 - 不测试你的客户端,但可以让你测试你的Asp.Net服务器端代码。

但首先你应该问自己(或你的管理)一个问题:我想考什么?客户端/服务器端验证?您的服务?行动方法?

1

开发人员有很多人反对自动测试UI。我之前做的是使用“Selenium Core”,这让我可以在Firefox中修复测试,然后保存为C#,然后混合使用C#和Html文件,我可以在其中进行以下操作。

  1. 忘记密码 - 从数据库中自动随机用户名会进入,然后加密的密码被通过电子邮件发送给我设置各种不同的Gmail帐户和我有C#API登录到Gmail和获取新的重置密码,然后重定向和有应用程序中输入新的密码,我可以把这个CI服务器哈德森和全天自动化这个测试长,成功和错误等的记录......

  2. 新注册......类似#1

所以为您的UI测试,让我们打电话,功能或UAT测试...... 然后为真正的单元测试,这是NUnit/Xunit,MSTest等,然后MOQ等...可以协助。 集成测试真正测试整个应用程序与连接系统...像文件系统或WCF或数据库,不被“嘲弄”

他们都有自己的优点和缺点,没有一个是完美的,但大多数人们最终认为单元测试是最大的压力。