DbUnit Java仅对一个测试禁用FOREIGN_KEY_CHECKS

问题描述 投票:0回答:1

我在Java7中有一个带有Spring和DbUnit 2.5.4的Java项目。我想禁用DbUnit键检查,但仅针对其中有许多表被交叉引用的特定测试。我尝试了此代码,但没有成功。如何仅为此测试禁用约束完整性?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "classpath:config/ioc/application-context-spring-test.xml"
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "classpath:config/ioc/application-context-spring-test.xml"
})
@TestExecutionListeners({
    DependencyInjectionTestExecutionListener.class,
    CleanInsertTestExecutionListener3A.class,
    TransactionalTestExecutionListener.class, })
@TransactionConfiguration(
    transactionManager = "myTxManager", defaultRollback = true)
public class FluxDSImplTest36466 {
.......

IDatabaseConnection dbConn = new DatabaseDataSourceConnection(
    testContext.getApplicationContext().getBean(DataSource.class));
// BAD TEST
// dbConn.getConnection()
 //.prepareStatement("set @@session.foreign_key_checks = 0").execute();
// dbConn.getConnection()
   //.prepareStatement("set referential_integrity FALSE").execute();
// dbConn.getConnection()
   //.prepareStatement("set foreign_key_checks=0;").execute();
// dbConn.getConnection()
   //.prepareStatement("set foreign_key_checks=0").execute();
// dbConn.getConnection()
  //.createStatement().execute("SET FOREIGN_KEY_CHECKS=0;");
//DatabaseOperation.CLEAN_INSERT.execute(dbConn, replaceDataSet);
java mysql spring dbunit
1个回答
0
投票

[如果您愿意尝试新的库,我建议dbrider具有此类功能并与Spring集成,这是一个示例:

@RunWith(SpringRunner.class)
@DBRider
@ContextConfiguration(classes = TestConfig.class)
public class DataSetIT {

    @Autowired
    private EntityUtils entityUtils;

    @Test
    @DataSet(value = "dataset.yml", cleanBefore = true, disableConstraints = true)
    public void testCleanBefore() {
        entityUtils.assertValues();
    }
}

[disableConstraints将在测试执行期间禁用所有约束,并向后启用它们。

© www.soinside.com 2019 - 2024. All rights reserved.