我们正在使用Asp.Net 2.0并计划迁移到TDD,以便可以开发和测试中间层,而团队中的其他人则负责UI和DataBase区域。
有谁可以让我知道TDD的先决条件,哪一个是.net的最佳工具? 感谢...
[UPDATE]
感谢大家的回答和帮助。
我正在阅读一篇关于TDD和ASP.NET的文章,它说“ASP.NET不是TDD友好的,ASP.NET MVC框架是构建应用程序的另一种方法,它更易于测试比form = based application。“ 我应该切换/更改为ASP.NET MVC吗?
您推荐哪些关于TDD / Test的书?
答案 0 :(得分:3)
NUnit是使用最广泛的。但是还有许多其他内容,例如XUnit和Machine.Specification用于BDD样式测试。
您选择的取决于您希望进行的测试类型。
答案 1 :(得分:3)
我建议你将NUnit和Moq结合起来进行对象模拟。您需要花费更多精力在Web表单应用程序中进行单元测试。
问题是,你不能错过这两个。
如果您处于项目的早期阶段,我建议您切换到Asp.net MVC,因为它可以让您的生活很多更容易进行单元测试。但要注意这里的学习曲线,因为MVC不仅仅是Asp.net Web表单的超集。这是一个完全不同的范例和开发平台。但我怀疑你会后悔转向它。
答案 2 :(得分:1)
TestDriven.NET是Visual Studio的一个很好的插件,它使您的解决方案中的运行测试无痛。我已经成功使用 MbUnit 和 NUnit 以及 Rhino.Mocks 或 Moq 之类的东西,这样你就可以在测试中创建模拟对象。
答案 3 :(得分:1)
关于书籍,我推荐Roy Osherove的The Unit of Unit Testing。它不是特定于ASP.NET的,但它涵盖了单元测试的基础,以及如何开发可随时间保持可维护的测试套件的指导。 Mocking也有很多好东西。
alt text http://www.artofunittesting.com/@api/deki/site/logo.png
答案 4 :(得分:1)
有许多测试/模拟框架,除了ASP.NET相关的东西外,它们完美无缺。如果您计划从纯ASP.NET迁移到可测试的东西,那么无论如何您将需要使用一种众所周知的模式来将视图与业务层分开。所以很可能你会处理MVC,MVP或MVVM方法。
Asp.net MVC是一个不错的选择,但正如这里提到的,它带来了新的编程范例和一些限制,如无法使用旧的ASP.NET控件。当然,有些情况下这种限制是不可接受的。
当我们遇到类似的问题是两年多以前我们找不到好的解决方案,这将使我们至少能够使用我们想要的任何UI控件,但同时尽可能多的可测试的代码。 我们决定建造一些可以自己使用的东西......
今年春天,我们将我们的工作成果提取到单独的项目中并发表。我们称之为新框架LiveUI。 请看一下。可能它会满足您的需求。
答案 5 :(得分:0)
不知道最好,但我喜欢NUnit。
答案 6 :(得分:0)
虽然NUnit已经存在了一段时间并且绝对是现任者,但我更喜欢XUnit.NET。这是一个非常现代,前瞻性的框架,完全改变了单元测试游戏。与以前的测试框架不同,XUnit.NET是可扩展的,允许您(或第三方)更改框架的行为方式,允许各种各样的测试方法,例如BDD样式“规范”。 / p>
有很多XUnit.NET“变形”框架提供了各种不同的方法来实现BDD。我不会列出所有内容......我只会列出我自己使用的那个。它很简单,前进,非常容易使用:SubSpec。由微软项目经理Phil Haack创建,它可能是进入BDD样式测试的最简单方法。
除了XUnit.NET之外,我还建议Moq作为选择的模拟框架。与XUnit.NET一样,Moq是一个非常现代,前瞻性的框架,可以改变模拟游戏,并开创了lambda表达式等新方法,消除了记录/重放语义等。
答案 7 :(得分:0)
虽然这里的大多数人都谈到了单元测试(并且不要误解我的非常重要)。您还应该进行集成/功能测试,特别是在驱除客户需求方面。为此,我强烈推荐Fitnesse。这是一个位于您的UI下的测试框架,并提供了一个用于访问业务逻辑的备用UI。我发现它非常宝贵。
答案 8 :(得分:0)
Pragmatic Unit Testing in C# with NUnit是一本很好的书,可以帮助您开始使用NUnit,它还包括模拟。
此外,ASP.NET MVC in Action可以帮助您开始使用ASP.NET MVC,并向您展示如何对控制器代码进行单元测试。