gpt4 book ai didi

java - 允许我的 Junit 测试与真实的数据库交互是不好的做法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:10 25 4
gpt4 key购买 nike

我正在构建一个基本的 HTTP API 和一些操作,例如 POST/users 在数据库中创建一个新的用户记录。

我知道我可以模拟这些调用,但在某种程度上我想知道让我的 Junit 测试针对真实(测试)数据库运行是否更容易?这是一种不好的做法吗?只应针对真实数据库运行集成测试吗?

我正在使用 flyway为我的构建维护我的测试架构和 Maven,这样我就可以让它在每个构建上使用正确的架构重新创建测试数据库。但我也担心我需要一些额外的开销来维护/清理每次测试之间的数据库状态,而且我不确定是否有好的方法可以做到这一点。

最佳答案

单元测试用于测试单个代码单元。这意味着您通过编写仅测试方法的内容来编写单元测试。如果存在外部依赖项,那么您可以模拟它们,而不是实际调用和使用这些依赖项。

因此,如果您编写代码并且它与真实数据库进行交互,那么它就不是单元测试。比如说,由于某种原因,您对 db 的调用失败,那么单元测试也将失败。单元测试的成功或失败不应依赖于外部依赖项,例如您的案例中的 db。您必须假设数据库调用成功,然后使用一些模拟框架 (Mockito) 对数据进行硬编码,然后使用该数据测试您的方法。

关于java - 允许我的 Junit 测试与真实的数据库交互是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51979595/

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