我正在尝试使用Arquillian Persistence Extension / DBunit进行访问数据库的集成测试。 它运行良好,我已将其配置为测试访问MySQL的系统部分:
<extension qualifier="persistence-dbunit">
<property name="qualifiedTableNames">true</property>
<property name="escapePattern">`?`</property>
</extension>
escapePattern非常重要,因为我的表格中包含“user”,“key”等名称。
现在我想测试访问Vertica的系统部分。 Vertica有一个不同的转义字符(“)并且不识别`作为转义。每次我尝试运行测试时,由于``而得到错误。
是否有任何方法可以根据运行的测试激活两种不同的配置? (或使用哪个数据库连接)?
答案 0 :(得分:1)
目前APE(Arquillian Persistence Extension)的局限性在于它无法在单个测试中控制多个数据库。我知道您的情况不同,您希望针对不同的数据库运行不同的测试套件(甚至针对不同的数据库进行相同的测试但具有不同的配置)。我使用maven配置文件为APE解决了这个问题,并且我针对容器和数据库的几种不同组合测试了代码库(在引用的示例中您将看到之间存在docker,但这对此并不重要)。我的方法简单地归结为:
test-resource
个文件夹arquillian.xml
配置test-resource
文件夹这样我可以保持测试的可移植性,但我可以透明地改变一些东西。
我希望这会对你有所帮助。看看配置here。