日期:2014-05-20  浏览次数:20620 次

请教一个和Maven test有关的问题,大家不吝赐教啊(最高就40分,全给啦!)^_^
现在手工项目是用maven组织和管理的,之前的test代码没有按照maven规范放置在test目录中,因此那个时候执行maven install时候test代码是不会被执行的。后来把所有test代码都迁移到指定的test目录了,在install或者deploy时候都可以执行unit测试。

  在大部分test代码中类中的测试方法是有外在依赖关系的,需要服务器启动后才能运行成功(姑且称之为functional test);而一些不需要(这些暂称呼为unit test),这样在install或者deploy时候就会有很多junit的失败信息,因为这些functional test代码需要到服务器启动后再测试才有意义。

  我想达到这样一种效果:在install或者deploy、site时候,这些test代码都不执行,在单独运行mvn test时候再执行。
但又不想每次在cmd中运行mvn install时候在后面加上“-Dmaven.test.skip=true”参数,麻烦不说,在maven和eclipse整合后,在eclipse中运行install时,添加这种参数也不方便;但如果我在pom.xml配置文件surefire的plugin插件的声明中一个skip项目,如下所示:
  <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<forkMode>always</forkMode>
<skip>true</skip> </configuration>
</plugin>

这样,在执行install、deploy、site这些命令固然可以方便的跳过test步骤,不需要手工再添加任何参数,但在单独执行“mvn test”时候,这些test也会被跳过不执行!

各位大虾,该如何处理?

跪谢!!!


------解决方案--------------------
我觉得可以用profile来实现。缺省active的profile把skip test设成true。当需要运行test时,用-P 和-!P来选择skip test为false的profile。
------解决方案--------------------
- - 有点复杂,只能来帮顶帖,求蹭分了
------解决方案--------------------
..上午刚开始看maven 没有好的解决思路 不过LZ 你现在可以先尝试将skip设置为true
然后在需要测试的时候再在启动参数上设置为false 不行么?

eclipse上加启动参数应该不是太难波~~