asp.net-mvc - 为 ASP.Net MVC 设置测试的最佳实践是什么?使用/处理/等什么?

标签 asp.net-mvc unit-testing testing tdd selenium

我正在尝试学习如何为 ASP.Net MVC 正确设置测试。

根据我迄今为止在这里和那里阅读的内容,遗留代码的定义有点激起我的兴趣,其中提到遗留代码是没有单元测试的任何代码。

所以我匆忙完成了我的项目,没有时间为应用程序正确设置单元测试,而且我仍在学习如何同时正确地进行 TDD 和单元测试。然后我遇到了 selenium IDE/RC 并用它在浏览器端进行测试。

也是在那段时间,我想到了集成测试的概念,所以从我的理解来看,似乎应该进行单元测试来定义每个功能的测试和基本假设,以及功能是否依赖于某些东西否则,需要模拟其他内容,以便测试始终是单一的并且可以快速运行。

问题:

  1. 所以我说得对吗 项目应该从 使用适当的模拟进行单元测试 像犀牛 mock 的东西。

    然后是其他需要的东西 第 3 方 dll,数据库数据访问 等通过集成完成 使用 Selenium 进行测试?

  2. 因为我有一个函数 调用第三方 dll,我不是 确定是否编写单元测试 nunit 只是实例化对象 并传递一些虚拟数据 打破模拟部分来测试它 或者只是覆盖我的那部分 当我进行 Selenium 集成测试 提交我的表格并调用 dll。

  3. 对于用户验收测试,是 可以肯定地说我们可以只使用 Selenium 又是?

  4. 我是不是遗漏了什么或者有没有 更好的方法/框架?

我正在尝试进行更多的回归测试,并确保在我们添加新功能时不会出现任何问题。我也喜欢 TDD 的想法,因为它有助于更​​好地定义功能,有点像元文档。

谢谢!! 希望这个问题不会太主观,因为我的情况需要它。

最佳答案

  1. so am i right to say that the project should have started with unit test with proper mocks using something like rhino mocks.

该项目应该从良好的关注点分离开始。一旦你有了很好的分离,并且你使用抽象而不是使用模拟框架的具体类,编写单元测试就是小菜一碟。

then anything else which requires 3rd party dll, database data access etc to be done via integration testing using selenium?

是的。

because i have a function which calls a third party dll, i'm not sure whether to write a unit test in nunit to just instantiate the object and pass it some dummy data which breaks the mocking part to test it or just cover that part in my selenium integration testing when i submit my forms and call the dll.

您不应该拥有调用第三方 DLL 的函数。您应该围绕这个 DLL 编写一个抽象/包装器,您将使用它并将在单元测试中对其进行模拟,您将在单元测试中验证您的函数是否调用了正确的方法而不真正调用它。然后,您将在应用程序中使用 DI 框架来进行管道连接。

and for user acceptance tests, is it safe to say we can just use selenium again?

Selenium 或任何其他 Web 测试框架都可以。在更高级的 ($) 版本的 Visual Studio 中,您可以编写 web tests .

关于asp.net-mvc - 为 ASP.Net MVC 设置测试的最佳实践是什么?使用/处理/等什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763809/

相关文章:

asp.net-mvc - 尝试将 Azure 媒体播放器集成到 React JS 中。但 Azure 依赖的 JavaScript lib 函数未找到 "amp"

javascript - 如何使用 C# 验证 Microsoft MVP 个人资料链接是否有效?

javascript - 使用 Sinon 测试调用方法的构造函数

c# - 任何具有良好单元测试(CodePlex 或任何地方)的 ASP.NET (WebForm) 应用程序?

Grails 集成测试无法识别 Controller 保存方法

asp.net-mvc - 如何使用razor View 引擎简洁地创建可选的HTML属性?

asp.net-mvc - 我可以在 MVC SelectList 中自定义我的数据文本字段以与 HtmlHelper.DropDownList 一起使用而无需创建新的结构或类吗?

c# - 如何模拟执行复杂 Entity Framework LINQ 查询的对象?

testing - 测试服务器容量

php - 用于测试 Web 表单中用户输入的正确处理的工具