Ich verwende DBUnit zum Testen meiner Datenbank. Meine Datenbank ist nicht leer. Also möchte ich bestehende Elemente ignorieren und nur die von meinem Test eingefügten Daten testen.So ignorieren Sie vorhandene Elemente von Tabellen beim Testen der Datenbank mit DBUnit
Dies ist ein Beispiel dafür, wie Test durchgeführt wird:
1- Tabelle 10 Elemente einige Daten aus dem Datensatz
2- DBUnit einzufügen enthält (3 Elemente)
3- My Prüfeinsatz Daten (1-Element)
4- Mys erwartete Datensatz enthält 4 Elemente, die der 3 elemnts definiert in dem ersten Datensatz und das Element zuletzt hinzugefügt durch den Test
sind5- Also, wenn ich ein Assert gleich der tatsächlichen und der erwarteten Tabelle mache, zeigt es mir einen Fehler, der normal ist, weil meine Tabelle bereits Elemente enthält.
Die Frage ist: Gibt es eine Möglichkeit, Elemente in der Datenbank in der Geltendmachung zu ignorieren? Ich möchte nur Daten von Datensatz und Test getestet testen.
Dies ist der Code:
@Override
protected IDataSet getDataSet() throws Exception {
// transforme fichier XML en BDD
URL url = this.getClass().getResource("/dataset-peqt2-init.xml");
File testFile = new File(url.getFile());
return new FlatXmlDataSetBuilder().build(testFile);
}
@Override
protected DatabaseOperation getSetUpOperation() throws Exception
{
return DatabaseOperation.REFRESH;
}
/**
* Reset the state of database
* Called before every test
*/
@Override
protected DatabaseOperation getTearDownOperation() throws Exception
{
return DatabaseOperation.DELETE;
}
/**
* get the actual table from the database
* @param tableName
* @return
* @throws Exception
* @throws SQLException
* @throws DataSetException
*/
private ITable getActualTable(String tableName) throws Exception, SQLException, DataSetException {
// get the actual table values
IDatabaseConnection connection = getConnection();
IDataSet databaseDataSet = connection.createDataSet();
return databaseDataSet.getTable(tableName);
}
/**
* get the expected table from the dataset
* @param tableName
* @param fileName
* @return
* @throws Exception
*/
private ITable getExpectedTable(String tableName, String fileName) throws Exception {
// get the expected table values
URL url = this.getClass().getResource("/"+fileName);
File testFile = new File(url.getFile());
IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(testFile);
return expectedDataSet.getTable(tableName);
}
@Test
public void test01_insert() throws SQLException, Exception {
File file = new File(SynchroDerbi.class.getResource("/test-insert.lst").getFile());
log.debug("test01_insert() avec ref : "+file.getName());
SynchroDerbi.run(file);
String fileName = "dataset-insert-expected.xml";
actualTable = getActualTable("equipment");
expectedTable = getExpectedTable("equipment",fileName);
Assertion.assertEqualsIgnoreCols(expectedTable, actualTable, new String[]{"id","idSite"});
}