单元测试 - 数据库和固定装置

Mar*_*ace 7 testing unit-testing mocking

我刚刚开始进入单元测试,并且由于与数据库的交互,无法看到执行大量测试用例的简单方法.

是否存在用于单元测试的标准方法/过程,其中需要数据库访问(读取和写入)以断言测试?

我可以想出迄今最好是有使用使用不同的数据库连接来引导我的应用程序,然后使用启动方法在现场分贝复制到隔离用于测试分贝配置文件?

我接近了吗?或者有更好的方法吗?

Ole*_*ksi 10

您的业​​务逻辑不应直接与数据库交互.相反,它应该通过一个数据访问层,您可以在单元测试的上下文中伪造和模拟.查看模拟框架来为您进行模拟.您的测试根本不应该依赖于数据库.相反,您应该明确指定从数据访问层返回的数据,然后确保您的业务逻辑与该信息正确运行.

测试程序与附加的DB一起工作更多的是集成测试,并且那些与它们相关的成本很高.它们较慢(因此每次编译时都很难运行它们),而且更复杂(因此它们需要更多的时间和精力来维护).如果你能够进行更简单的单元测试,我建议你先做.稍后您可以添加可能使用数据库的集成测试,但您可以通过首先添加更简单的单元测试获得最大价值.

  • @ user1189880在我的脑海中进行测试的一大好处是,它会强制您重构代码以使其更易于测试.如果你可以重构你的代码,从长远来看你会好得多.如果由于某种原因无法重构,我会创建一个不同的数据库实例,在每次测试运行之前,该数据库实例将被清除并填充数据. (3认同)