I am using Mockrunner 0.4 for testing JDBC-Finder-Tests. I have a test-module that contains 3 tests. The problem is, that the second testcase that actually executes a SELECT-Statement fails, as the result set is null (not empty). If I have only 1 JDBC-Access in my test-module every test works fine. Here an example:
Hi,
I am using Mockrunner 0.4 for testing JDBC-Finder-Tests. I have a test-module that contains 3 tests. The problem is, that the second testcase that actually executes a SELECT-Statement fails, as the result set is null (not empty). If I have only 1 JDBC-Access in my test-module every test works fine. Here an example:
Testmodule with tests
- testInstance()
- testFindKeyTable()
- testFindKeyValues()
Result: testFindKeyValues() fails.
Testmodule with tests
- testInstance()
- testFindKeyValues()
- testFindKeyTable()
Result: testFindKeyTable() fails.
Testmodule with tests
- testInstance()
- testFindKeyValues()
Result: ok.
Testmodule with tests
- testInstance()
- testFindKeyTable()
Result: ok.
Did I leave out some initialization? Thanks for any help.
Here is my Code:
public class KeysJDBCFinderImplTest extends JDBCTestCaseAdapter {
private static final String SQL_TABLE_METADATA = "SELECT TAB_BEZEICHNUNG, USER_UPDATE, TIME_UPDATE FROM XYZ.TAB1 WHERE TAB_NR = ? AND FACHBEREICH = ? AND INST_NR = ? ";
private static final String SQL_VALUE_METADATA = "SELECT TAB_NR, FACHBEREICH, INST_NR, TAB_NR_LFD, SV_WERT, SV_WERT_ZUORDNUNG, SV_DATENTYP, SV_BEZEICHNUNG FROM XYZ.TAB2 WHERE TAB_NR = ? AND FACHBEREICH = ? AND INST_NR = ? ORDER BY TAB_NR_LFD ASC, SV_WERT_ZUORDNUNG ASC";
private static final String SQL_SIMPLE_VALUE_DATA = "SELECT T1.NUMMER_LFD , T1.SV_WERT_1, T1.SV_WERT_2, T1.SV_WERT_3, T2.SV_WERT_1, T2.SV_WERT_2, T2.SV_WERT_3 FROM XYZ.TAB3 T1, XYZ.TAB3 T2 WHERE T1.TAB_NR = 'TEST' AND T1.FACHBEREICH = 'TESTFB' AND T1.INST_NR = 909 AND T1.TAB_NR_LFD = 1 AND T2.TAB_NR = 'TEST' AND T2.FACHBEREICH = 'TESTFB' AND T2.INST_NR = 909 AND T2.TAB_NR_LFD = 2 AND T2.NUMMER_LFD = T1.NUMMER_LFD ";
KeysFinderInterface ivFinder;
KeysAnfragePO ivAnfrage;
long ivNow;
/**
*
*/
public KeysJDBCFinderImplTest() throws Exception {
}
/*
* (non-Javadoc)
* @see com.mockrunner.jdbc.BasicJDBCTestCaseAdapter#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
// JDBC Initialisierung
JDBCMockObjectFactory lvFactory = getJDBCMockObjectFactory();
MockDataSource lvDS = lvFactory.getMockDataSource();
ivFinder = (KeysFinderInterface) FinderFactory.getFinderFor("de.company.base.keys.dao.Keys", PersistenceTypeEnum.JDBC_PERSISTENCE_TYPE);
MockContextFactory.setAsInitial();
InitialContext lvCtx = new InitialContext();
String lvDSName = "DataSource";
lvCtx.rebind(lvDSName, lvDS);
// Anfrage-Initialisieren
ivAnfrage = new KeysAnfragePO();
// Sonstiges
ivNow = System.currentTimeMillis();
}
/*
* (non-Javadoc)
* @see com.mockrunner.jdbc.BasicJDBCTestCaseAdapter#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
MockContextFactory.revertSetAsInitial();
}
/**
* Test method for {@link de.company.base.keys.dao.KeysJDBCFinderImpl#instance()}.
*/
public void testInstance() {
KeysJDBCFinderImpl lvFinder_2 = KeysJDBCFinderImpl.instance();
assertEquals(ivFinder, lvFinder_2);
assertTrue(ivFinder == lvFinder_2);
}
/**
* Test method for {@link de.company.base.keys.dao.KeysJDBCFinderImpl#findKeyTable(de.company.base.keys.po.keytable.KeysAnfragePO)}.
* @throws Exception
*/
public void testFindKeyTable() throws Exception {
createTableMetaDataRS();
KeyTablePO lvResult = ivFinder.findKeyTable(ivAnfrage);
verifySQLStatementExecuted(SQL_TABLE_METADATA);
verifyAllResultSetsClosed();
verifyAllStatementsClosed();
assertEquals(new FDTString("TEST METADATA"), lvResult.getBeschreibung());
assertEquals(new FDTString("TESTFB"), lvResult.getFachbereich());
createEmptyTableMetaDataRS();
lvResult = ivFinder.findKeyTable(ivAnfrage);
verifySQLStatementExecuted(SQL_TABLE_METADATA);
verifyAllResultSetsClosed();
verifyAllStatementsClosed();
assertNull(lvResult.getBeschreibung());
}
private void createEmptyTableMetaDataRS() {
PreparedStatementResultSetHandler lvHandler = getPreparedStatementResultSetHandler();
MockResultSet lvRS = lvHandler.createResultSet();
lvHandler.prepareResultSet(SQL_TABLE_METADATA, lvRS);
}
private void createTableMetaDataRS() {
PreparedStatementResultSetHandler lvHandler = getPreparedStatementResultSetHandler();
MockResultSet lvRS = lvHandler.createResultSet();
lvRS.addColumn("TAB_BEZEICHNUNG", new String[]{"TEST METADATA"});
lvRS.addColumn("USER_UPDATE", new String[]{"A108997"});
lvRS.addColumn("TIME_UPDATE", new Timestamp[]{new Timestamp(ivNow)});
lvHandler.prepareResultSet(SQL_TABLE_METADATA, lvRS);
}
/**
* Test method for {@link de.company.base.keys.dao.KeysJDBCFinderImpl#findKeyValues(de.company.base.keys.po.keytable.KeysAnfragePO)}.
* @throws Exception
*/
public void testFindKeyValues() throws Exception {
createValueMetaDataRS();
createSimpleValueRS();
POCollection lvResult = ivFinder.findKeyValues(ivAnfrage);
verifySQLStatementExecuted(SQL_VALUE_METADATA);
verifyAllResultSetsClosed();
verifyAllStatementsClosed();
assertTrue(lvResult.size() == 3);
}
/**
*
*/
private void createValueMetaDataRS() {
PreparedStatementResultSetHandler lvHandler = getPreparedStatementResultSetHandler();
MockResultSet lvRS = lvHandler.createResultSet();
// TAB_NR, FACHBEREICH, INST_NR, TAB_NR_LFD, SV_WERT, SV_WERT_ZUORDNUNG, SV_DATENTYP, SV_BEZEICHNUNG
lvRS.addColumn("TAB_NR", new String[]{"TEST", "TEST", "TEST", "TEST", "TEST", "TEST"});
lvRS.addColumn("FACHBEREICH", new String[]{"TESTFB", "TESTFB", "TESTFB", "TESTFB", "TESTFB", "TESTFB"});
lvRS
.addColumn("INST_NR", new Integer[]{new Integer(909), new Integer(909), new Integer(909), new Integer(909), new Integer(909),
new Integer(909)});
lvRS.addColumn("TAB_NR_LFD", new Integer[]{new Integer(1), new Integer(1), new Integer(1), new Integer(2), new Integer(2), new Integer(2)});
lvRS.addColumn("SV_WERT", new String[]{"Wert 1", "Wert 2", "Wert 3", "Wert 4", "Wert 5", "Wert 6"});
lvRS.addColumn("SV_WERT_ZUORDNUNG", new Integer[]{new Integer(1), new Integer(2), new Integer(3), new Integer(1), new Integer(2), new Integer(3)});
lvRS.addColumn("SV_DATENTYP", new String[]{"VARCHAR", "NUMERIC", "DATE", "TIME", "INTEGER", "FLOAT"});
lvRS.addColumn("SV_BEZEICHNUNG", new String[]{"Zeichenkette", "Zahl", "Datum", "Zeitangabe", "Ganze Zahl", "Fließkommazahl"});
lvHandler.prepareResultSet(SQL_VALUE_METADATA, lvRS);
}
private void createSimpleValueRS() {
PreparedStatementResultSetHandler lvHandler = getPreparedStatementResultSetHandler();
MockResultSet lvRS = lvHandler.createResultSet();
// T1.NUMMER_LFD , T1.SV_WERT_1, T1.SV_WERT_2, T1.SV_WERT_3, T2.SV_WERT_1, T2.SV_WERT_2, T2.SV_WERT_3
lvRS.addColumn(new Integer[]{new Integer(1), new Integer(2), new Integer(3)});
lvRS.addColumn(new String[]{"Text 1", "Text 2", "Text 3"});
lvRS.addColumn(new String[]{"1234.3334", "1234.3334", "1234.3334"});
lvRS.addColumn(new String[]{"01.01.1970", "02.02.1970", "03.03.1970"});
lvRS.addColumn(new String[]{"01:01:01", "02:02:02", "03:03:03"});
lvRS.addColumn(new String[]{"1", "2", "3"});
lvRS.addColumn(new String[]{"1.1", "2.2", "3.3"});
lvHandler.prepareResultSet(SQL_SIMPLE_VALUE_DATA, lvRS);
}
}
I'm wondering if you had any sucess with this? I'm running into the same issue with a simular setup.