gpt4 book ai didi

unit-testing - 为什么不在单元测试中访问数据库?

转载 作者:行者123 更新时间:2023-12-04 00:49:12 26 4
gpt4 key购买 nike

我在博客中读到,当单元测试运行时,数据库不应该被击中。我理解这个理论,但是说我有复杂的存储过程,这是业务域操作的一部分。我想为与业务操作相关的代码编写一组单元测试,但是如果我模拟数据库,我感觉我没有“真正”测试作为操作一部分的所有部分。例如,有人可以在其中一个数据库代码中创建错误,并且测试仍然可以正常运行。

我想知道这个关于单元测试的指南在实践中是否很好。
我已经看到了“集成测试”的概念,但是我不确定使用什么工具来进行集成测试。例如 ¿ 是否可以使用 Nunit 之类的测试框架创建集成测试?

谢谢

雨果

最佳答案

您只是处于语义灰色区域。

  • 系统测试从端到端覆盖整个系统。
  • 单元测试可用于描述端到端循环的子部分。

  • 在这种情况下,您的应用程序代码的单元测试将/可能不会命中数据库,但您将/可能有涵盖数据库存储过程的单元测试......

    基本上将您的应用程序划分为沿着有意义的分区进行测试的事物。如果您选择了错误的分区线,您最终会遇到模拟对象和测试脚手架之类的大代码维护问题......

    Web 应用程序的一种常见方法是编写一系列单元测试来测试数据访问层......

    然后编写一系列单元测试,测试应用层(包括数据层)...

    最后写一些基于浏览器的系统测试......

    诀窍是仅通过 API 将信息输入和输出中间集(应用程序层),而不是钻入数据库以查看是否有效。这样,如果您更改数据架构,您的测试就不会中断。

    但有时(正如我在写这篇文章时实际所做的那样)你必须查看数据库来制作一个有意义且健壮的测试套件(我正在测试服务器-服务器传输协议(protocol))。

    专注于为您的应用程序获得最大代码覆盖率和稳定性的方式,同时编写最少数量的测试脚手架,并避免测试套件中的脆弱性。

    关于unit-testing - 为什么不在单元测试中访问数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054989/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com