Próbuję skonfigurować moje środowisko testowe do używania DbUnit.Używanie DbUnit z tabelami, które nie mają kluczy podstawowych
Mam kilka problemów, ponieważ tabele, które próbuję kontrolować, nie mają kluczy podstawowych. Otrzymałem numer org.dbunit.dataset.NoPrimaryKeyException
.
śledzę kroki tutaj http://dbunit.wikidot.com/noprimarykeytable ale jak mam użyć:
connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
dla każdego z moich tabel?
Na przykład mam następujące bazy danych:
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>
Jak mogę przepisać connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
w tym przypadku?
Wielkie dzięki za radę.
Dzięki slushi. To ma sens. A co jeśli jedna z tabel ma klucz złożony z więcej niż jednego pola? – mip
Myślę, że możesz zmienić mapę na mapę> i wykonać test zawierający. –
slushi
Tak więc instrukcja return staje się 'return pseudoKey.get (tableName) .contains (column.getColumnName());'? – mip