java - DbUnit Java仅在一次测试中禁用FOREIGN_KEY_CHECKS

标签 java mysql spring dbunit

我在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);

最佳答案

如果您愿意尝试新的库,建议您使用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将在测试执行期间禁用所有约束,并向后启用它们。

关于java - DbUnit Java仅在一次测试中禁用FOREIGN_KEY_CHECKS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58055479/

相关文章:

Mysql查询空白数据

mysql - 操作数应包含 1 列存储过程

javascript - 在 ajax 成功中无法检测到来自 mysql 的 json_encode 结果

java - Spring 与 Hibernate 基于注解

java - AWS Lambda + Spring,如何加载application.yml

java - 无法在weblogic 12.1.3上部署spring boot构建的ear文件

Java libGDX Box2D : can you set center of mass manually?

java - Common Lisp 中的类自省(introspection)

java - FreeMarker 模板中的枚举错误

java - 为什么这个 HashMap.get 返回 null?