gpt4 book ai didi

java - 如何为 JUnit 测试记录和重用数据库结果

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:57 24 4
gpt4 key购买 nike

我想利用现有数据库作为 JUnit 测试数据的来源。有些场景非常复杂,手动设置所有对象很麻烦。

我正在考虑为我现有的 DAO 装饰器,它将序列化我真正的 SQL 连接的 DAO 从数据库返回的对象并将它们记录到文件中。

在一次记录模式下运行 JUnit 测试用例,之后总是重放记录的数据而不是进入数据库。

是否有 Java 框架来简化这个过程,还是我必须自己实现它?

最佳答案

使用序列化框架(丑陋的内置 Java Serialization API 或 XML 或 JSON 映射器)将 bean 转换为文件并返回。许多现代框架只需要很少的提示即可完成工作。

选项:

JSON:GsonJackson
XML:SimpleWoodstox

这样一来,您根本不必进入 JDBC。我总是尽量避免测试数据库——供应商应该这样做。我的测试只测试我是否正确地使用数据库。为此,我只需要检查查询构建器是否生成了正确的 SQL 字符串(但我不需要将它们发送到数据库)。

在测试DB时(通过JDBC驱动向实体发送数据),测试用例要尽可能的小和简单。我总是针对包含测试用例但没有生产数据的特定测试数据库运行测试。不同之处在于测试数据库的每一行都有一个目的。生产数据库包含案例 A 一百万次,B 一次,C 缺失,因为它非常罕见。

说“我想针对生产数据库的副本进行测试”是一种礼貌的说法,表示“我不知道自己在做什么,所以我做了很多。”

测试数据库在第一个测试运行时从头开始重建(静态代码块是你的 friend )。这阻止了人们将它用于任何事情。每个开发人员都有自己的实例。

如果您有一个复杂的存储过程,请像对待任何其他 Java 代码一样对待它:使用最简单的测试数据测试每条路径。

所有这些规则只有两个目标:让每个人在编写针对真实数据库的测试之前三思而后行 - 然后决定反对它。第二个目标:如果测试使用数据库,则大多数情况下都会成功。

关于java - 如何为 JUnit 测试记录和重用数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8412853/

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