max*_*mus 4 java database eclipse dbunit unit-testing
我目前正在使用dbunit进行编码测试(使用hsqldb).但是,我在初始化db时遇到了很大的问题:
这是代码:
/**
* Init before a test starts
*/
@Before
public void initialise() {
IDataSet dataSetRating = null;
IDataSet dataSetMovie = null;
log.info("enter init test");
try {
con = datasource.getConnection();
icon = new DatabaseConnection(con);
File rating = new File("./src/test/resources/startDatabaseRating.xml");
dataSetRating = new FlatXmlDataSetBuilder().build(rating);
DatabaseOperation.CLEAN_INSERT.execute(icon, dataSetRating);
} catch (Exception e) {
e.printStackTrace();
log.error(e);
System.exit(-1);
}
}
Run Code Online (Sandbox Code Playgroud)
我的create语句看起来像这样:
CREATE TABLE Rating
(
rid INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
mid INTEGER FOREIGN KEY REFERENCES Movie(movieId),
rating INTEGER NOT NULL,
);
Run Code Online (Sandbox Code Playgroud)
我的startDatabaseRating.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<Rating rid="0" mid="0" rating="1" />
<Rating rid="1" mid="0" rating="2" />
<Rating rid="2" mid="0" rating="3" />
<Rating rid="3" mid="0" rating="4" />
<Movie movieid="0" title="Movie1" moviePath="C" />
<Movie movieid="1" title="Movie2" moviePath="D" />
</dataset>
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到:
java.sql.SQLIntegrityConstraintViolationException:完整性约束违规:外键无动作; SYS_FK_10556表:评分
为什么我会得到此异常,因为*.xml文件中仍有数据集.如何解决这个问题?
更新:
CREATE TABLE Movie
(
movieId INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
title VARCHAR(255) NOT NULL,
moviePath VARCHAR(500) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
a_h*_*ame 12
插入评级时,引用的影片必须已存在于movie表格中.所以你以错误的顺序插入行.
你需要先插入电影,然后再评分.
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<Movie movieid="0" title="Movie1" moviePath="C" />
<Movie movieid="1" title="Movie2" moviePath="D" />
<Rating rid="0" mid="0" rating="1" />
<Rating rid="1" mid="0" rating="2" />
<Rating rid="2" mid="0" rating="3" />
<Rating rid="3" mid="0" rating="4" />
</dataset>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15400 次 |
| 最近记录: |