【问题标题】:Creating JUnit tests for database items with auto generated keys使用自动生成的键为数据库项创建 JUnit 测试
【发布时间】:2009-08-24 10:07:14
【问题描述】:

我有一个带有存储在数据库中的主键的类。创建类的新实例时,它可以从 HSQLDB 数据库中获取,也可以对于不在数据库中的项目,它会插入除主键之外的所有内容,这是自动生成的并返回给类以设置 id 属性。然后我有一个 getID() 方法来检索这个 ID。

我正在尝试编写一个 JUnit 测试来检查以确保生成的 ID 是由 getID() 方法返回的,但我已经使用“CALL IDENTITY”查询来检索构造函数中的 ID 以及随后的使用return 0. 确保生成的 ID 与 getID() 方法返回的 id 相同的最佳方法是什么?

【问题讨论】:

    标签: java database hsqldb


    【解决方案1】:

    我真的会考虑不同的设计来测试这些类。在大多数情况下,访问数据库实际上并不是单元测试。如果 db ID 生成器工作并且有一个测试,那么你不应该真的需要它来测试你的类。

    如果你的类可以返回一个 Id,那么你的类返回在正确的时间放入其中的 id 就很重要了。

    【讨论】:

    • 我更想测试类的 getID() 方法。恰好这个 ID 是由数据库生成的,所以我不能简单地检查它是否是我告诉它实例化的。
    • @Haegin - 我个人没有明确测试吸气剂。我尝试测试行为(可能通过 getter 可见)。如果你所有的getID() 都在返回一个private 字段,那么测试真的不值得写,恕我直言,你的系统行为当然不应该依赖于持久化的对象。
    猜你喜欢
    • 2019-11-24
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多