我最近开始将我的项目从ant迁移到maven。我的应用程序中有两个模块,我可以使用maven构建。
现在我有自动化测试项目,它使用Web Driver来测试UI功能。我想用maven做的是建立两个模块战并将它们部署到tomcat上。然后对它们运行自动化测试,并在自动化测试通过后传递构建。我已经像这样配置了我的pom(只提到重要部分):
<packaging>pom</packaging>
<modules>
<module>../module1</module>
<module>../module2</module>
</modules>
现在两个项目都进行构建和部署,但它不运行自动化测试。我之所以认为包装类型是POM。但如果我把它改成战争就会开始抛出错误。
我可以考虑为自动化和父pom创建第三个pom,以便将其作为模块包含在内。但我在想这是否是正确的方法。它应该是一个非常常见的场景,而且maven应该直接支持它。
答案 0 :(得分:4)
(...)自动化模块是用于测试UI的基于WebDriver的自动化测试。这取决于网络战,但没有包依赖。我正在使用货物maven插件部署到tomcat。我想在运行自动化测试之前立即从源代码构建Web战争,然后在tomcat上部署然后运行测试。我可以使用ant build完成所有这些但无法使用maven
这绝对可行(而且我已经做了很多次)。但我不确定你当前的项目结构(尤其是测试所在的位置)。
这是我建议的结构:
. ├── functests │ ├── pom.xml // here we configure maven to run cargo & it tests │ └── src │ └── it │ ├── java │ │ └── ... // functional tests will go here │ └── resources ├── pom.xml // aggregating pom └── mywebapp // the application under test ├── pom.xml └── src ├── main │ ├── java │ ├── resources │ └── webapp └── test ├── java └── resources
有关pom设置的详细信息,请查看Functional testing with Maven, Cargo and Selenium,其中包含所需的所有详细信息。
答案 1 :(得分:1)
我不认为带有共享集成测试模块的2个war模块是一个非常常见的场景。
但是,您可以使用Hudson。
您可能希望使用profiles来激活集成测试,或者更具体地说,是为了防止在第一个作业期间执行集成测试。
我今年早些时候在大约一个小时内建立了一个基本的Hudson服务器
Hudson直接支持maven构建,并为您的项目maven站点提供位置,包括所有质量报告等。
您还可以将Hudson配置为“监视”SCM,并在识别提交时启动构建。
答案 2 :(得分:0)
“我能想到创造第三个pom” 你只有两个POM吗?每个项目/模块都需要自己的POM。
在此处查看有关使用maven进行集成测试的更多信息:http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing
修改强> 我不完全清楚你的项目布局是什么样的。但我想它应该看起来像这样:
文件结构
myWebApp/
pom.xml
myWebApp-web/
pom.xml
myWebApp-integration-tests/
pom.xml
/myWebApp/pom.xml
<packaging>pom</packaging>
<modules>
<!-- packaging: war; here are the sources and unit tests -->
<module>myWebApp-web</module>
<!-- packaging: java; here are the integration tests -->
<module>myWebApp-integration-tests</module>
</modules>
通过此设置,/myWebApp/mvn deploy
将执行以下步骤:
/myWebApp/myWebApp-web/pom.xml
中配置)这应该做你想要的。