如何为ASP.NET MVC视图进行Web测试?

5
在ASP.NET WebForms中,我已经在多个项目中使用Selenium来记录和运行我的Web和UI测试。
我知道我们可以非常容易地对ASP.NET MVC中的控制器和模型进行单元测试。
那么视图呢?
您是否也会测试视图?如果不是,如何确保由控制器操作呈现的视图包含期望的逻辑和行为?
我猜想,在WebForm中使用的相同的Web测试工具,例如WatiN和Selenium,也可以在这里使用,但不确定?
如果是这样,WebForms和MVC中的WebTesting之间有什么区别?

1
这不正确,您可能还需要测试视图。还可能存在逻辑(例如JavaScript、控制操作调用、导航等),您可能希望确保它们的行为符合您的预期。 - The Light
2个回答

8

关于视图呢?

嗯,使用Selenium和WatiN。

实际上,就集成测试而言,你认为ASP.NET MVC视图与经典的ASP.NET WebForms有什么不同呢?我的意思是,它们最终都会生成HTML。这就是浏览器和类似Selenium的工具所理解的。谁生成了这个HTML并不那么重要。在集成测试中,你关心的是当用户在输入框gamma中输入beta后,点击按钮alpha时,是否在生成的HTML页面上看到Welcome User Phi。你真正关心的是场景,而不是像ASP.NET MVC这样的服务器端技术,甚至更不用说像ASP.NET MVC Views这样的东西了。

顺便说一句,你可以在PHP中使用Selenium和WatiN。或者如果你是Java Servlets的粉丝,也可以在其中使用。无论你使用哪种服务器端技术,在集成测试中重要的是你之前定义好的场景。

那么,在WebForms中进行WebTesting和在MVC中进行WebTesting之间有什么区别吗?

没有区别。


1

我认为在浏览器驱动的集成测试方面,ASP.NET MVC和WebForms之间存在差异,因为这些框架的不同服务器端方面导致了不同的测试方法。

使用辅助此类操作的框架,例如Seleno。它在内部使用Selenium,但将所有浏览器交互抽象为C#页面对象,您可以在C#测试中非常流畅地使用它们。

有许多扩展和约定可帮助执行许多常见的浏览器自动化操作,例如单击按钮或从表格中提取数据。

但是为什么我要将其作为回答此问题的答案呢?对于.NET MVC来说,Seleno特别方便,因为页面对象可以是通用的,针对特定视图(或部分视图)的ViewModel进行类型化,这样在编写相应的页面对象时就会创建强类型关联。

正是MVC的ViewModel方面开启了这种方法;我认为使用WebForms可能会更棘手。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接