gpt4 book ai didi

unit-testing - tdd - 为第 3 方代码创建测试

转载 作者:行者123 更新时间:2023-11-28 19:48:03 25 4
gpt4 key购买 nike

如果我要测试的方法或过程依赖于来自第三方的一段代码,我该如何创建单元测试?比如说,我有一个方法使用来自第三方来源的类,该方法需要只能在功能测试中完成的设置。我应该如何处理这个问题?大多数时候,无法模拟第三方依赖项,但我的方法确实需要使用它。

此外,我是否应该避免单元测试甚至功能测试利用实际数据?比如,我的测试不应该连接到数据库 API 来临时添加数据、对其进行操作和测试,然后再删除它吗?

最佳答案

单元测试

你应该测试一切。但不是所有的东西都使用单元测试。单元测试不依赖于环境——数据库、互联网连接等。使用不受信任/不稳定的第 3 方工具的最佳实践是在您的代码和第 3 方代码之间创建反腐败层。所以重构你的代码,让你的业务逻辑尽可能独立。并对业务逻辑进行单元测试。

如果您不确定第 3 方代码的工作原理或将来是否会发生变化,您可以进行“学习测试”。这些是断言您所依赖的行为的单元测试(如果可能的话)。在学习测试中,您只测试第 3 方代码,而不是您自己的代码

如果第 3 方代码不太受信任(众所周知的开源库),那么您假设它可以工作,不要进行任何分离并且您只对您的代码而不是库进行单元测试。

非单元测试

如果您的测试需要外部环境(数据库、网络等),那么您应该进行集成测试。它的目的不是测试业务逻辑,而是测试您是否正确连接了所有部分。 sql 测试是最著名的异常之一。

没有关于如何进行集成测试的简单规则(您可以编写有关 sql 测试的书籍)。这取决于您到底想测试什么,与您需要/想要的生产环境有多少相似之处。例如,您可以针对内存数据库或类似生产的数据库(oracle、postgres 等)进行 sql 测试。无论您如何设计集成测试,您都必须确保每个测试都以已知的环境状态开始。并且您已经考虑了使环境处于肮脏状态的错误以及此类测试的速度

关于unit-testing - tdd - 为第 3 方代码创建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543498/

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