我正在学习使用 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/