asp.net-mvc - 如何在 ASP.NET MVC 中以 BDD 风格进行单元和集成测试?

标签 asp.net-mvc bdd specflow mspec

我正在学习使用 ASP.NET MVC 进行行为驱动开发,并且基于 a post Steve Sanderson 的文章指出,BDD 至少可以表示以下测试类型:单独的代码单元和 UI 交互。 this post中提到了类似的内容。如果我想要单元测试和集成测试,我是否需要两个不同的测试框架?

  • 使用上下文/规范框架(例如 MSpec)对存储库、 Controller 和服务进行单元测试。测试结果将对开发团队有用。

  • 使用给定/何时/那么框架测试完整的行为(集成),例如 SpecFlow 和 Watin。该测试的结果将对我的客户有用。

到目前为止,我看过的有关使用 BDD 的视频仅局限于测试实体的行为,而没有测试存储库、 Controller 等的行为...是否有一个示例项目,我可以在其中看到自动化的单元和集成使用 BDD 方法进行测试?

最佳答案

就我个人而言,我使用 SpecFlow 来构建特定于功能的测试(即“用户创建新公司记录”),有时(但并非总是)我会使用 Watin。为了测试我的存储库或服务类,我将使用 NUnit 进行单元/集成测试。集成测试适用于在测试期间需要与数据库对话的情况,单元适用于当我只需在被测目标对象中运行代码而无需外部交互时。

我想说的是,您不需要为非 UI 测试使用 BDD 框架。如果你愿意的话可以,但是对此没有硬性规定。如果您打算这样做,那么我强烈建议您为测试创建多个项目。将它们分开是一个好主意,而不是将所有测试混合到一个项目中。您可以命名它们:

MyProject.Tests.Features <-- For BDD SpecFlow tests.

MyProject.Tests.Integration <-- For tests that access an external resource i.e. database.

MyProject.Tests.Unit

如果您不想使用两个 BDD 框架,您仍然可以以 BDD 方式使用 MSTest/NUnit。例如,this博客文章描述了一个很好的命名约定,它接近 BDD,但针对 MSTest/NUnit 单元测试。当您测试存储库等内容时,您可以将其用于非 SpecFlow 测试。

总之 - 您不必在测试中使用 SpecFlow 和 MSpec,但如果您这样做,那么我建议使用单独的测试项目。

关于asp.net-mvc - 如何在 ASP.NET MVC 中以 BDD 风格进行单元和集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911166/

相关文章:

c# - 在 BeforeFeature 方法中初始化 webdriver

bdd - SpecFlow 报告所有断言,即使其中一个断言失败

visual-studio-2013 - 使用 VS2013 在 SpecFlow 中运行单一场景

javascript - View 中存在多个表单,部分 View 中存在单个提交

rest - 在 API 自动化测试中使用 BDD 是一个好方法吗?

asp.net-mvc - 如何使用简单注入(inject)器装饰 ASP.NET MVC Controller

java - Given, when, then约定和异常处理。使用 Mockito 和 JUnit

php - 在上下文方法中访问 Behat 命令行选项或标志

c# - 多语言枚举

c# - ASP.NET MVC F# Controller 操作忽略参数