单元测试 asp.net 直接连接到数据库的 Web 服务 Web 方法
unit testing asp.net web services web methods having direct connection to database
我有一个 asp.net 具有 [WebMethod] 的 Web 服务服务层。这些网络方法具有连接字符串并正在修改开发数据库。没有单独的数据访问层。 WebMethods 正在通过存储过程修改数据库。我想使用 nunit 对这些 Web 方法进行单元测试。但是无法想出一种不修改数据库的方法。我愿意修改我的服务层,以便完全分离数据访问层,然后对其进行单元测试。任何引导执行这些事情的良好做法的线索都将不胜感激。
更新:
我的网络服务正在被一个已建立的产品使用,这使得在分离 DAL 后很难进行构造函数依赖注入。
您肯定需要更改 DAL 才能对此进行单元测试。你的单元测试不应该接触数据库,你应该创建一个存储库或其他一些抽象,你可以在你的测试中模拟它们。
解决方案直接在于单元测试的理论。您创建了一个实现接口的数据访问层,并使用依赖注入在 运行 场景中使用真实代码,并在测试场景中使用模拟服务。
你要测试的代码,需要和上面的代码隔离,和下面的代码隔离。然后为每个场景或方法准备一个测试,这将验证在这个测试用例中,对于预期的输入数据,你是否得到预期的输出数据。
因此,我认为您可能会混淆两种类型的测试。单元测试只是您可以测试的特定功能,不应依赖外部系统。您可以执行集成测试,因为 Web 服务与该数据库紧密耦合。它将重构数据库函数并模拟对其的调用,以便能够正确测试服务。执行此操作后,MSDN 提供了有关如何正确对 Web 服务进行单元测试的步骤:https://msdn.microsoft.com/en-us/library/ms243399(v=vs.100).aspx
我有一个 asp.net 具有 [WebMethod] 的 Web 服务服务层。这些网络方法具有连接字符串并正在修改开发数据库。没有单独的数据访问层。 WebMethods 正在通过存储过程修改数据库。我想使用 nunit 对这些 Web 方法进行单元测试。但是无法想出一种不修改数据库的方法。我愿意修改我的服务层,以便完全分离数据访问层,然后对其进行单元测试。任何引导执行这些事情的良好做法的线索都将不胜感激。
更新: 我的网络服务正在被一个已建立的产品使用,这使得在分离 DAL 后很难进行构造函数依赖注入。
您肯定需要更改 DAL 才能对此进行单元测试。你的单元测试不应该接触数据库,你应该创建一个存储库或其他一些抽象,你可以在你的测试中模拟它们。
解决方案直接在于单元测试的理论。您创建了一个实现接口的数据访问层,并使用依赖注入在 运行 场景中使用真实代码,并在测试场景中使用模拟服务。
你要测试的代码,需要和上面的代码隔离,和下面的代码隔离。然后为每个场景或方法准备一个测试,这将验证在这个测试用例中,对于预期的输入数据,你是否得到预期的输出数据。
因此,我认为您可能会混淆两种类型的测试。单元测试只是您可以测试的特定功能,不应依赖外部系统。您可以执行集成测试,因为 Web 服务与该数据库紧密耦合。它将重构数据库函数并模拟对其的调用,以便能够正确测试服务。执行此操作后,MSDN 提供了有关如何正确对 Web 服务进行单元测试的步骤:https://msdn.microsoft.com/en-us/library/ms243399(v=vs.100).aspx