有没有办法在dbUnit / Arquillian Persistence扩展中为不同的数据库提供不同的配置?

时间:2016-02-29 15:55:18

标签: jboss-arquillian dbunit

我正在尝试使用Arquillian Persistence Extension / DBunit进行访问数据库的集成测试。 它运行良好,我已将其配置为测试访问MySQL的系统部分:

<extension qualifier="persistence-dbunit">
        <property name="qualifiedTableNames">true</property>
        <property name="escapePattern">`?`</property>
    </extension>

escapePattern非常重要,因为我的表格中包含“user”,“key”等名称。

现在我想测试访问Vertica的系统部分。 Vertica有一个不同的转义字符(“)并且不识别`作为转义。每次我尝试运行测试时,由于``而得到错误。

是否有任何方法可以根据运行的测试激活两种不同的配置? (或使用哪个数据库连接)?

1 个答案:

答案 0 :(得分:1)

目前APE(Arquillian Persistence Extension)的局限性在于它无法在单个测试中控制多个数据库。我知道您的情况不同,您希望针对不同的数据库运行不同的测试套件(甚至针对不同的数据库进行相同的测试但具有不同的配置)。我使用maven配置文件为APE解决了这个问题,并且我针对容器和数据库的几种不同组合测试了代码库(在引用的示例中您将看到之间存在docker,但这对此并不重要)。我的方法简单地归结为:

  • 我为每个配置分隔了test-resource个文件夹
  • 在那里,我有专门针对给定数据库的arquillian.xml配置
  • Maven个人资料并按需添加这些特殊test-resource文件夹

这样我可以保持测试的可移植性,但我可以透明地改变一些东西。

我希望这会对你有所帮助。看看配置here