使用自动生成的键为数据库项创建 JUnit 测试
Posted
技术标签:
【中文标题】使用自动生成的键为数据库项创建 JUnit 测试【英文标题】:Creating JUnit tests for database items with auto generated keys 【发布时间】:2009-08-24 10:07:14 【问题描述】:我有一个带有存储在数据库中的主键的类。创建类的新实例时,它可以从 HSQLDB 数据库中获取,也可以对于不在数据库中的项目,它会插入除主键之外的所有内容,这是自动生成的并返回给类以设置 id 属性。然后我有一个 getID() 方法来检索这个 ID。
我正在尝试编写一个 JUnit 测试来检查以确保生成的 ID 是由 getID() 方法返回的,但我已经使用“CALL IDENTITY”查询来检索构造函数中的 ID 以及随后的使用return 0. 确保生成的 ID 与 getID() 方法返回的 id 相同的最佳方法是什么?
【问题讨论】:
【参考方案1】:我真的会考虑不同的设计来测试这些类。在大多数情况下,访问数据库实际上并不是单元测试。如果 db ID 生成器工作并且有一个测试,那么你不应该真的需要它来测试你的类。
如果你的类可以返回一个 Id,那么你的类返回在正确的时间放入其中的 id 就很重要了。
【讨论】:
我更想测试类的 getID() 方法。恰好这个 ID 是由数据库生成的,所以我不能简单地检查它是否是我告诉它实例化的。 @Haegin - 我个人没有明确测试吸气剂。我尝试测试行为(可能通过 getter 可见)。如果你所有的getID()
都在返回一个private
字段,那么测试真的不值得写,恕我直言,你的系统行为当然不应该依赖于持久化的对象。以上是关于使用自动生成的键为数据库项创建 JUnit 测试的主要内容,如果未能解决你的问题,请参考以下文章
在 JUnit 5 测试中模拟 Spring Boot 2 应用程序的自动装配依赖项
具有依赖项的 Maven2 + JMeter + JUnit
session.getAttribute() 的键为空,在 spring 框架 3.2.4 应用程序上使用 OWASP_CSRFTOKEN