Menu

ResultSet is null on second Test

CodeDiver
2007-12-17
2013-04-15
  • CodeDiver

    CodeDiver - 2007-12-17

    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);
        }

    }

     
    • gbonk

      gbonk - 2009-04-09

      I'm wondering if you had any sucess with this?  I'm running into the same issue with a simular setup.

       

Log in to post a comment.

MongoDB Logo MongoDB