سؤال

أنا أستخدم DBUNIT لاختبار استمرار الربيع / السبات.

لقد أنشأت اختبار مجردة:

public abstract class AbstractTestCase extends
    AbstractTransactionalDataSourceSpringContextTests {

    @Override
    protected String[] getConfigLocations() {
        return new String[] { 
                "classpath:/applicationContext.xml",
                "classpath:/testDataSource.xml" };
    }
    @Override
    protected void onSetUpInTransaction() throws Exception {
        DataSource dataSource = jdbcTemplate.getDataSource();
        Connection con = DataSourceUtils.getConnection(dataSource);

        boolean validateSchemaExists = true;
        IDatabaseConnection dbUnitCon = new DatabaseConnection(con,
                "MHADB_TEST", validateSchemaExists);

        DatabaseConfig dbUnitConConfig = dbUnitCon.getConfig();
        dbUnitConConfig.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,
                new OracleDataTypeFactory());

        boolean enableColumnSensing = true;
        boolean enableDTDMetadata = false;
        IDataSet dataSet = new FlatXmlDataSet(new File(
                "./src/test/resources/mhadb-dataset.xml"),
                enableDTDMetadata,
                enableColumnSensing);
        try {
            DatabaseOperation.CLEAN_INSERT.execute(dbUnitCon, dataSet);
        } finally {
            DataSourceUtils.releaseConnection(con, dataSource);
        }
    }
}

ولكن كلما قمت بتشغيل اختبار، فإنه يقوم بتحديث DB مرة أخرى DataSet قبل كل طريقة اختبار، وهو وقت طويل جدا وغير لطيف للغاية.

كيف يمكنني إعادة تحميل / تحديث فقط على الفشل؟

ملاحظة: كم تمتص الكود؟

هل كانت مفيدة؟

المحلول

لقد وجدت طريقة لتسريع الاختبارات، حتى اعتقد أن السلوك لا يزال غير متوقع (تحديث فشل):

    dbUnitConConfig.setFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS,
            true);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top