Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自动生成的键为数据库项创建JUnit测试_Java_Database_Hsqldb - Fatal编程技术网

Java 使用自动生成的键为数据库项创建JUnit测试

Java 使用自动生成的键为数据库项创建JUnit测试,java,database,hsqldb,Java,Database,Hsqldb,我有一个带有主键的类,它存储在数据库中。创建类的新实例时,可以从HSQLDB数据库中获取,也可以为数据库中不存在的项插入除主键以外的所有内容,这是自动生成的,并返回到类以设置id属性。然后我有一个getID()方法来检索这个ID 我正在尝试编写一个JUnit测试,检查以确保生成的ID是getID()方法返回的ID,但我已经使用“CALL IDENTITY”查询在构造函数内检索ID,并随后使用此返回0。确保生成的ID的最佳方式与GETIDER()方法返回的ID相同吗?< P>我会考虑不同的设计来测

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


我正在尝试编写一个JUnit测试,检查以确保生成的ID是getID()方法返回的ID,但我已经使用“CALL IDENTITY”查询在构造函数内检索ID,并随后使用此返回0。确保生成的ID的最佳方式与GETIDER()方法返回的ID相同吗?

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


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

我更想测试类的getID()方法。碰巧这个ID是由数据库生成的,所以我不能简单地检查它是否是我告诉它要实例化的对象。@Haegin-就我个人而言,我没有显式地测试getter。我尝试测试行为(可以通过getter看到)。如果所有的
getID()
都返回一个
private
字段,那么测试就不值得编写,imho和系统的行为当然不应该依赖于已持久化的对象。