【发布时间】:2010-04-06 22:57:02
【问题描述】:
我一直在寻找如何进行单元测试并发现它很容易,但是,我想知道的是,在 asp.net mvc 应用程序中,什么应该是真正重要的测试以及你应该使用哪些方法伙计们用吗? 我只是找不到关于在编写单元测试时真正测试什么的明确答案。 我只是不想进行不必要的测试并浪费开发时间进行过度测试。
【问题讨论】:
标签: asp.net-mvc unit-testing tdd
我一直在寻找如何进行单元测试并发现它很容易,但是,我想知道的是,在 asp.net mvc 应用程序中,什么应该是真正重要的测试以及你应该使用哪些方法伙计们用吗? 我只是找不到关于在编写单元测试时真正测试什么的明确答案。 我只是不想进行不必要的测试并浪费开发时间进行过度测试。
【问题讨论】:
标签: asp.net-mvc unit-testing tdd
您应该尽可能地对您的应用程序进行单元测试。
对于您编写的每一行代码,您都需要验证它是否有效。如果您不对其进行单元测试,则需要以其他方式对其进行测试。甚至启动网站并四处点击都是一种测试。
当您将单元测试与其他类型的测试(包括运行网站和手动使用它)进行比较时,单元测试往往会提供最佳的投资回报,因为它们相对易于编写和维护,并且可以快速反馈您是否刚刚引入了回归错误。
我并不是说编写单元测试没有开销 - 有,但是任何类型的测试都有开销,而且根本不测试会有很大的开销(因为回归错误很容易漏掉)。
用其他类型的测试来补充单元测试仍然是一种很好的做法,但是好的单元测试套件可以提供出色的回归测试套件。
【讨论】:
Ron Jeffries 说“Test everything that could possibly break”。
其他人 - 我想是 Kent Beck,但我找不到参考资料 - 说:“只测试你想工作的代码。”
这两个都是不错的策略。
【讨论】:
我实际上认为不需要在 MVC 中测试任何东西。我认为除了视图和控制器之外,您所有的业务逻辑、规则等都需要测试?
我能看到测试控制器的唯一真正原因是集成测试。如果你所有的业务逻辑都是正确的,那么这应该是一个简单的测试,总是返回 true。
控制器实际上应该只从视图中获取数据并将数据传递给它,所以......
对于视图,除了打开视图看看它做了什么之外,还可以进行哪些测试?
当我编写我的项目时,控制器中几乎没有代码,我将所有繁琐的工作都放在了我已经进行了广泛测试的业务引擎中。
【讨论】:
单元测试有利于测试服务/模型。但是,当您需要测试应用程序功能时,更好的选择是功能测试(即 Selenium)
【讨论】: