繁体   English   中英

嵌入式的。 H2 DB自动增量(Java测试用例)

[英]Embedded. H2 DB Auto Increment (Java Test Case)

我有一个具有MS SQL DB的Java Spring应用程序。 对于DAO类的单元测试,我使用嵌入式H2 DB将一些虚拟数据插入H2 DB。 但是我正在努力使自动生成主键起作用。

这是创建架构/表/插入虚拟数据查询,位于Spring项目dir的resources文件夹中的create.sql文件中:

CREATE SCHEMA local_db AUTHORIZATION sa; 
CREATE TABLE local_db.test_db (
  id int(4) NOT NULL AUTO_INCREMENT,
  username varchar(25) NOT NULL,
  isActive varchar(1) NOT NULL,
  PRIMARY KEY (id)
);

插入虚拟数据

INSERT INTO local_db.test_db VALUES (1,'TestDATA1','Y');
INSERT INTO local_db.test_db VALUES (2,'TestDATA2','Y');
INSERT INTO local_db.test_db VALUES (3,'TestDATA3','Y');

我的测试代码读取了这个create.sql文件,该文件正在使用伪数据正确创建架构/表。

这是在测试类setUp()中完成的

DaoClassUnderTest daoClassUnderTest;
  public void setUp() throws Exception {
    EmbeddedDatabase db = new EmbeddedDatabaseBuilder().
    setType(EmbeddedDatabaseType.H2).
    addScript("create.sql").
    build(); 
    daoClassUnderTest  = new DaoClassUnderTest(db);
  }

但是,当我实际在DAO类(正在测试)上调用insert方法时,它会插入数据,但会使id字段为null而不在id列中插入任何值。

INSERT INTO local_db.test_db (username, isActive) VALUES (?,?);

如何通过Junit测试代码在Embedded.H2 DB上使用自动增量功能?

我将创建表查询修改为后工作

CREATE TABLE local_db.test_db (
  id int(4) NOT NULL IDENTITY,
  username varchar(25) NOT NULL,
  isActive varchar(1) NOT NULL
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM