2009-08-24 23 views
0

我有一个存储在数据库中的主键。在创建类的新实例时,可以从HSQLDB数据库获取数据,也可以为不在数据库中的项目插入除主键以外的所有项目,并自动生成并返回到类以设置id属性。然后我有一个getID()方法来检索这个ID。使用自动生成的键为数据库项目创建JUnit测试

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

回答

1

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

假设你的类可以返回一个Id,那么所有这些都应该重要,因为你的类返回了在正确的时间放入它的id。

+0

我更试图测试该类的getID()方法。它恰好如此,这个ID由数据库生成,所以我不能简单地检查它是我告诉它实例化的。 – Haegin 2009-08-24 10:14:58

+1

@Haegin - 我个人没有明确测试获得者。我尝试测试行为(可能通过getter来看到)。如果你所有的'getID()'都在做它返回一个'private'字段,那么测试并不值得写,imho和你系统的行为当然不应该依赖于持久化的对象。 – 2009-08-24 10:43:38