代码之家  ›  专栏  ›  技术社区  ›  Luke Lowrey

向现有ASP.NET Web窗体应用程序添加单元测试

  •  5
  • Luke Lowrey  · 技术社区  · 16 年前

    我有一个现有的ASP.NET webforms应用程序,我想在其中添加一些单元测试,但不确定如何进行。

    这个应用程序是由数据库驱动的,我想你可以和高级论坛相比。逻辑、数据访问和表示大部分是分开的。

    我应该测试什么方法?

    如何处理数据库和测试数据?

    有没有建议的工具来协助这项工作?

    4 回复  |  直到 13 年前
        1
  •  5
  •   Mark Seemann    16 年前

    你需要做的第一件事是: 你增加单元测试的动机是什么?

    进行单元测试有很多很好的理由(我自己也严格地练习了TDD),但是知道在您的案例中哪一个是主要的驱动力应该有助于您决定首先编写哪一个测试。

    在大多数情况下,您应该集中精力为您的应用程序领域编写单元测试,这些领域过去一直是您最痛苦的地方。

    许多经验表明,当软件最初是在没有单元测试的情况下编写时,很难随后对单元测试进行修改。 Working Effectively with Legacy Code 为如何使未经测试的软件项目可测试提供有价值的指导。

        2
  •  1
  •   dkarzon Sven Grosen    16 年前

    我很可能会测试Web表单调用的支持方法(绕过表单验证),这将允许您测试逻辑和数据访问。

    对于测试数据,最好是单独的测试数据库。否则,我建议让测试方法在测试数据完成后删除它。

        3
  •  1
  •   John MacIntyre    13 年前

    对于数据库相关的单元测试,我们使用一个独立的、稳定的测试数据库来执行单元测试。

    我们还将数据修改测试包装在 TransactionScope 这是未提交的,因此将回滚对后续测试运行所做的数据更改。我们发现这个很管用。

        4
  •  0
  •   Tom Lianza    14 年前

    在工具方面,我也在寻找测试ASP.NET WebForms应用程序的方法。对于模型部分(数据访问等),我使用本地SQL Express数据库nunit,并在所有测试运行之前编写代码(从我们签入的.sql文件中)来创建架构。

    在测试之间,我使用修女 DataRollback 用于在每次运行后回滚任何数据库更改的扩展。

    不过,我仍然不知道如何在页面中测试逻辑,类似于Rails的功能测试。从报道的角度来看,这是毁灭性的。您可以将许多逻辑推回到您的模型中,但是在您的代码背后文件中总是有一些代码是很重要的,可以中断的,并且您希望得到单元测试。