如何使用maven-assembly-plugin生成的WAR存档可用于其​​他项目的单元测试?

时间:2010-10-22 07:45:31

标签: java maven-2 junit maven-assembly-plugin

我的问题包括两个maven项目,一个服务器项目A和一个客户端项目B.A使用maven-assembly-plugin生成A的几个变体,其中一个变量是WAR归档。我面临的问题与B的测试驱动开发有关; 如何使项目A中生成的WAR存档可以从项目B中的单元测试中访问/寻址?我的想法是在项目B中构建测试用例,其中WAR存档部署在嵌入式Jetty服务器中WebApppContext的setWar(String path)函数。

1 个答案:

答案 0 :(得分:1)

您可以将其他子模块中的工件声明为测试依赖项,例如:

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ModuleA</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>

</dependencies>

通过这种方式,您可以使用其他模块中的罐子。我不确定它是否适用于WAR文件 - 但它可能值得一试。

请注意,针对嵌入式Web容器中部署的WAR运行的测试很难算作单元测试,而是集成测试。在项目中运作的方法是:

  1. 构建Web应用程序(在我们的例子中是一个EAR)并部署它(我们使用的是JBoss Maven插件,但它可能是例如Cargo或其他情况)
  2. 运行单独的构建(具有允许服务器启动的特定超时),以执行针对已部署的Web应用程序的集成测试