我有一个现有的asp.net webforms应用程序,我想添加一些单元测试,但我不确定如何去做。
该应用程序是数据库驱动的功能,我想你可以与高级论坛进行比较。逻辑,数据访问和演示在很大程度上是分开的。
我应该测试哪些方法?
如何处理数据库和测试数据?
是否建议使用任何工具来帮助解决此问题?
答案 0 :(得分:5)
您需要决定的第一件事是:您添加单元测试的动机是什么?
进行单元测试有很多很好的理由(我自己严格地练习TDD),但知道哪一个是你的主要驱动力应该可以帮助你决定首先编写哪些测试。
在大多数情况下,您应该集中精力为您的应用程序区域编写单元测试,这些测试过去一直是您最痛苦的。
许多经验表明,当软件最初是在没有单元测试的情况下编写的,随后很难对单元测试进行改造。 Working Effectively with Legacy Code为如何使未经测试的软件项目可测试提供了宝贵的指导。
答案 1 :(得分:1)
我很可能会测试您的Web表单调用的支持方法(绕过表单验证),这将让您测试逻辑和数据访问。
对于测试数据,单独的测试数据库将是最佳选择。否则我建议让测试方法一旦完成就删除测试数据。
答案 2 :(得分:1)
对于与数据库相关的单元测试,我们使用一个单独且稳定的测试数据库来执行单元测试。
我们还将数据修改测试包装在未提交的TransactionScope
中,以便为后续测试运行回滚数据更改。我们发现这个效果非常好。
答案 3 :(得分:0)
在工具方面,我也在寻找一些方法来测试ASP.NET webforms应用程序。对于模型部分(数据访问等),我使用NUnit,一个本地sql express db,并在所有测试运行之前编写代码来创建模式(来自我们检入的.sql文件)。
在测试之间,我使用NUnit DataRollback扩展来在每次运行后回滚任何数据库更改。
我仍然不知道在页面中测试逻辑的好方法,类似于Rails的功能测试。从覆盖范围的角度来看,这是毁灭性的。您可以将大量逻辑推回到模型中,但是代码中的代码总是在文件后面是重要的,可能会破坏,并且您希望对单元进行单元测试。