有没有办法在 dbUnit / Arquillian Persistence 扩展中对不同的数据库进行不同的配置?

Is there any way to have different configurations for different databases in dbUnit / Arquillian Persistence extension?

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

的系统部分
<extension qualifier="persistence-dbunit">
        <property name="qualifiedTableNames">true</property>
        <property name="escapePattern">`?`</property>
    </extension>

escapePattern 很重要,因为我的表的名称如 "user"、"key" 等等。

现在我想测试访问Vertica的系统部分。 Vertica 具有不同的转义字符 ("),并且不将 ` 识别为转义符。每次我尝试 运行 测试时,都会因 ``.

而出错

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

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

  • 我为每个配置分开了 test-resource 个文件夹
  • 在那里我有专门的 arquillian.xml 与给定数据库相关的配置
  • Maven 配置文件并根据需要添加那些特殊的 test-resource 文件夹

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

希望对您有所帮助。查看配置 here.