【问题标题】:How to test business logic layer which involves data update in database如何测试涉及数据库中数据更新的业务逻辑层
【发布时间】:2019-05-15 15:35:54
【问题描述】:
我知道我的问题看起来像是在寻找一些捷径,但实际上我已经搜索了很多,但找不到专门针对涉及数据库数据更新的业务层学习单元测试的资源。
我确实获得了学习在 nunit 中编写单元测试用例的资源,但它们都在测试静态数据。我不想作为初学者学习单元测试编写,我有在 nunit 中编写单元测试的想法,我的主要问题是我们如何测试涉及数据库中数据插入/更新/删除的方法?我们真的在测试时插入数据吗?嘲讽在其中起作用吗?
请帮助我提供特别涵盖此案例的任何资源。
谢谢!
【问题讨论】:
标签:
c#
unit-testing
nunit
【解决方案1】:
如果您的业务层是用 C# 编写的,正如您的标签所示,那么模拟数据库是最佳实践。您使用一个模拟框架,它允许您控制数据层并编写断言您的业务层在受控(模拟)响应下做正确的事情。如果您使用这种方法,那么您的测试将被隔离并执行得非常快,无需任何与数据库的连接(您应该能够在一秒钟内执行数千个单元测试。)
如果您的数据库本身包含大量业务逻辑,那么您可以单独对其进行单元测试,但我不会为此使用 nunit。
如果您决定将数据库包含在您的 nunit C# 业务逻辑测试中,那么您将不得不处理与数据库的连接以及测试之间的共享状态。您将处于更复杂的设置中并处理更复杂的错误。
这是一个很好的资源:@987654321@