- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Unitils 来帮助我进行数据库测试。我想使用 Unitils/DBMaintain 功能来禁用约束。然而,这存在一些问题。我不想使用 DBMaintain 为我创建数据库,但我希望使用其约束禁用功能。我能够通过使用下面列出的自定义模块来实现这一目标:
public class DisableConstraintModule implements Module {
private boolean disableConstraints = false;
public void afterInit() {
if (disableConstraints) {
DatabaseUnitils.disableConstraints();
}
}
public void init(Properties configuration) {
disableConstraints = PropertyUtils.getBoolean("Database.disableConstraints", false, configuration);
}
}
这部分解决了我想要的问题,但是我希望能够仅禁用我将在测试中使用的表的约束。我的测试将针对具有多个模式的数据库运行,每个模式都有数百个不同的表。 DatabaseUnitils.disableConstraints() 禁用每个模式中每个表的约束,这将非常耗时并且没有必要。
在搜索 dbmaintain 代码时,我发现 Db2Database 类确实包含一个用于禁用特定模式和表名基础上的约束的函数,但是此方法受到保护。我可以通过扩展 Db2Database 类或使用反射来访问它。
接下来,我需要能够确定我感兴趣的架构和表。我可以通过观察 @DataSet 注释来根据 xml 中的内容确定哪些架构和表很重要。为了做到这一点,我需要重写 TestListener,以便我可以指示它在尝试插入数据集之前使用 xml 禁用约束。这是我的尝试:
public class DisableConstraintModule extends DbUnitModule {
private boolean disableConstraints = false;
private TableBasedConstraintsDisabler disabler;
public void afterInit() {
}
public void init(Properties configuration) {
disableConstraints = PropertyUtils.getBoolean("Database.disableConstraints", false, configuration);
PropertyUtils.getInstance("org.unitils.dbmaintainer.structure.ConstraintsDisabler.implClassName", configuration);
}
public void disableConstraintsForDataSet(MultiSchemaDataSet dataSet) {
disabler.disableConstraints(dataSet);
}
protected class DbUnitCustomListener extends DbUnitModule.DbUnitListener {
@Override
public void beforeTestSetUp(Object testObject, Method testMethod) {
disableConstraintsForDataSet(getDataSet(testMethod, testObject));
insertDataSet(testMethod, testObject);
}
}
}
这就是我想要做的,但是我无法获取 @DataSet 注释来触发我的 DbUnitCustomListener,而是调用默认的 DBUnitModule DbUnitListener。无论如何,我是否可以在使用 @DataSet 注释时覆盖调用哪个监听器,或者是否有更好的方法来禁用 DB2 数据库的特定模式和表级别的约束?
谢谢
最佳答案
您必须告诉 Unitils 使用 DbUnitModule 的子类。您可以使用unitils.properties 文件中的unitils.module.dbunit.className 属性来执行此操作。听起来您已经弄清楚了这一部分。
第二部分是重写 DbUnitModule 的 getTestListener() 以返回自定义监听器。
查看此post举个例子。
关于java - 更改 Unitils DbUnitModule 的 TestListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473055/
有什么想法可以用 Unitils dbunit 完成吗? Date relative to current in the DBUnit dataset 问题是 [create_date]-placeh
是否有人知道 unitils project还活着。在 Maven 存储库中的页面上,最后一个版本是 3.3,它是 3.4.2。(实际上,他们的页面有谷歌缓存版本,据说版本是 3.4.2) 无论如何,
有人可以与我分享一下 Unitils @InjectInto 或 @InjectIntoByType 注释是如何处理的吗? 我已经检查了UnitilsJUnit4.class,这是处理此注释所必需的。
我正在尝试为我的应用程序设置一些单元测试,我想使用 Unitils 数据集进行测试,但到目前为止我遇到了很多问题。我确信我的设置有误,任何人都可以检查它是否存在问题。 我有 hibernate.cfg
我想尝试使用 DBUnit 进行单元测试,但我的数据集有问题。 这是我的持久化对象: @Entity @Table(name = "personnes") public class Personne
我正在尝试让 scala 规范和 unitils-dbunit 工作。 要使用 unitils,你必须注释你的使用 @RunWith(classOf[UnitilsJUnit4TestClassRun
我正在尝试使用 Unitils 来帮助我进行数据库测试。我想使用 Unitils/DBMaintain 功能来禁用约束。然而,这存在一些问题。我不想使用 DBMaintain 为我创建数据库,但我希望
我正在考虑为我的 spring+hibernate web 应用程序使用哪个测试框架。最初我发现了 Unitils 并对它产生了浓厚的兴趣,但后来我看到了标准的 Spring TestContext
我正在使用unitils 进行hibernate orm 测试。我采用了hibernate版本5.0.10-Final和最新的unitils版本3.4.3。我总是收到以下错误:“org.unitils
我有下表(迁移): databaseChangeLog: - changeSet: id: 1 author: me changes: - cr
EasyMock 或 Unitils Mock(不支持 Unitils 的 EasyMock)中是否有任何技术可以将模拟直接注入(inject)被测类? 例如。在 Mockito 中,可以将模拟直接注
这似乎是一个简单的问题。我在 spring 应用程序中有一些 unitils 测试。该数据库包含一些 oracle View ,我只想将数据集插入到这些 View 中。我知道可以将选项设置为 DBun
我使用了 Maven,并且我的项目有以下依赖项。 org.unitils unitils-spring 3.3 test
我是一名优秀的程序员,十分优秀!