集成测试,多个容器,多个API实现和Maven。有小费吗?

时间:2011-04-23 06:12:59

标签: unit-testing maven-2

您将如何在Maven中配置以下内容?假设我有4个模块:

  • 数据存取API
  • 数据存取参数impl-德比
  • 数据存取参数impl-的PostgreSQL
  • 数据访问集成的测试

假设我希望能够针对两个容器进行测试:

  • 的Arquillian-jbossas-ebedded-6
  • 的Arquillian-的glassfish包埋-3.1

要运行我的集成测试,我需要'data-access-api'模块和完全一个的实现。我还想测试正好一个的容器。我可以想到一些让它工作的方法,但它们都有缺点,我甚至不知道Maven是否支持其中的一些。

我发现以下建议将配置文件组的概念添加到Maven,但据我所知,没有添加任何类似的内容:

http://docs.codehaus.org/display/MAVENUSER/Improvements+to+Profile+Activation+Deactivation

拥有一组互斥的配置文件的概念可行,但可能很快就无法管理。想象一下3个实现和3个容器。即使我可能只对测试3种或4种可能的组合感兴趣,也会有9种可能的配置文件配置。

我能想到的另一个解决方案是为每个需要测试的场景创建一个集成模块。例如(详细说明我的意思):

  • 集成-的Arquillian-的glassfish嵌入数据存取的PostgreSQL

但是,如果不重复我的集成测试,我无法找到一种方法。我的数据访问集成测试模块只有 集成测试。我使用CDI进行依赖注入,并针对API运行测试。我可以针对每个实现运行相同的测试集。这只是用API打包一个实现的问题。

我现在正在使用Maven 2.

1 个答案:

答案 0 :(得分:0)

如何将集成测试放入抽象类并放入单独的模块(您已经完成的操作)并创建派生类,该类创建实现的实例并执行这些测试。这将首先解决仅执行一次测试,导致您根据接口行为测试实现。可能this使它更清晰一点。我会说你建议的最后一件事是最好的,所以你的“integration-arquillian-glassfish-embedded-data-access-postgresql”将只包含一个派生自你的抽象类并创建特定实例并运行测试的类