java - DbUnit Java 仅对一个 TEST 禁用 FOREIGN_KEY_CHECKS
问题描述
我在 Java7 中有一个带有 Spring 和 DbUnit 2.5.4 的 Java 项目。我想禁用 DbUnit Key 检查,但仅适用于交叉引用许多表的特定测试。我试过这段代码没有成功。如何仅为此测试禁用约束完整性?
@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 - 将所有 JAR 中的所有类加载到类路径
- mysql - 具有日期范围的 MySQL 查询优化
- python - cv2.rectangle 加入最近的边界框
- go - golang diff 类型的函数提供“未解析类型”
- xamarin - 如何在 xamarin.android 中以编程方式锁定屏幕
- sql-server - SQL Server 查询性能测试
- node.js - node.js 如何处理带背压的快速生产者和慢速消费者
- string - Angular:从路径加载 SVG 并将其字符串化
- javascript - Cordova Framework7 使用 CanvasJS 导出图片
- c# - 正确使用 3rd 方库,unity3d 中的脚本