我試圖設置我的單元測試環境以使用DbUnit。對沒有主鍵的表使用DbUnit
我有幾個問題,因爲我試圖控制的表沒有主鍵。我一直在獲得org.dbunit.dataset.NoPrimaryKeyException
。
我已經在這裏遵循的步驟http://dbunit.wikidot.com/noprimarykeytable但我要如何使用:
connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
我的每個表的?
例如,我有以下數據庫:
CREATE TABLE `NO_PK1` (
`A1` int(11) NOT NULL,
`A2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK1 A1="1" A2="Test1" />
<NO_PK1 A1="2" A2="Test2" />
<NO_PK1 A1="3" />
</dataset>
CREATE TABLE `NO_PK2` (
`B1` int(11) NOT NULL,
`B2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK2 B1="1" B2="Test1" />
<NO_PK2 B1="2" B2="Test2" />
<NO_PK2 B1="3" />
</dataset>
CREATE TABLE `NO_PK3` (
`C1` int(11) NOT NULL,
`C2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK3 C1="1" C2="Test1" />
<NO_PK3 C1="2" C2="Test2" />
<NO_PK3 C1="3" />
</dataset>
如何在這種情況下改寫connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
?
非常感謝您的任何建議。
謝謝slushi。這就說得通了。如果其中一個表有一個由多個字段組成的密鑰呢? – mip 2012-02-06 13:40:33
我認爲你可以將地圖改成地圖<字符串,設置>並做一個包含檢查。 –
slushi
2012-02-06 21:53:57
所以return語句變成'return pseudoKey.get(tableName).contains(column.getColumnName());'? – mip 2012-02-07 09:18:21