我有一个由父母和少数儿童项目组成的春季项目。 构建是基于maven的,连续集成服务器是哈德森。
我需要选择单元测试的运行方式。 目前,有几个好的,也很少垃圾junit测试。 我不喜欢乱用子项目的测试包,因为它会耗费时间,我不熟悉所有的junits和最后但并非最不重要的:我很懒。
我的问题是:
任何建议都会受到赞赏。
阿维亚德
答案 0 :(得分:4)
- 我应该使用maven-surefire-plugin 并在测试中进行大量清理 包?
- 是告诉哈德森的任何方式(不是 正在构建的项目的pom.xml) 运行特定的单元测试和 忽略别人?
醇>
如果您只想在单模块项目中运行单元测试,则可以执行
mvn test
这将使所有maven lifecycle phases最多test
,包括compile
和test-compile
(正如您在built-in lifecycle bindings中看到的那样,surefire:test
目标在阶段test
中执行。现在,如果要限制执行的单元测试,可以使用surefire:test
参数配置test
插件执行:
mvn test -Dtest=Funky*Test
(这将执行所有以Funky
开头并以Test
结尾的测试类)
不幸的是,命令行配置是有限的,如果你想要多个包含和排除,你将不得不做一些XML配置。我建议使用hudson的专用配置文件:
<profiles>
<profile>
<id>hudson</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<includes>
<include>**/TestA.java</include>
<include>**/Funky*Test.java</include>
<include>**/Test**.java</include>
</includes>
<excludes>
<!-- overrides above include -->
<exclude>**/TestButNotMe.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
现在你可以让你的哈德森打电话给这样的人:
mvn -Phudson test
答案 1 :(得分:3)
1)我应该使用maven-surefire-plugin并在测试包中进行大量清理吗?
是
2)是否可以告诉hudson(不是在正在构建的项目的pom.xml中)运行特定的单元测试并忽略其他测试?
如果您使用JUnit,我不知道。但是你可以检查版本4.7,4.6,4.5的“隐藏”功能......(有很多,你可以在发行说明中找到它)。如果您不需要任何东西,那么您可以通过yourselfe对其进行编程。 (检查系统属性并跳过测试)。
3)我应该创建一些其他构建 - (ant?)并使用它来在hudson上运行单元测试吗?
这就像在pom中传递它一样。但在我个人看来,混合Ant和Maven是你能做的最丑陋的事情之一。
4)我不知道市场上还有其他选择吗?
查看TestNG。