Estoy intentando configurar mi entorno de pruebas unitarias para usar DbUnit.Uso de DbUnit con tablas que no tienen claves principales
Tengo algunos problemas ya que las tablas que estoy intentando controlar no tienen claves principales. He estado recibiendo un org.dbunit.dataset.NoPrimaryKeyException
.
que han seguido los pasos aquí http://dbunit.wikidot.com/noprimarykeytable pero ¿cómo se utiliza:
connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
para cada uno de mis cuadros?
Por ejemplo, he la siguiente base de datos:
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>
¿Cómo reescribir connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
en este caso?
Muchas gracias por cualquier consejo.
Gracias slushi. Eso tiene sentido. ¿Qué pasa si una de las tablas tiene una clave compuesta por más de un campo? – mip
creo que allí podría cambiar el Mapa a un Mapa> y hacer un control de contenido. –
slushi
Entonces la declaración de retorno se convierte en 'return pseudoKey.get (tableName) .contains (column.getColumnName());'? – mip