单元测试 - 需要建议

时间:2011-01-18 08:18:20

标签: java maven-2 hudson

我有一个由父母和少数儿童项目组成的春季项目。 构建是基于maven的,连续集成服务器是哈德森。

我需要选择单元测试的运行方式。 目前,有几个好的,也很少垃圾junit测试。 我不喜欢乱用子项目的测试包,因为它会耗费时间,我不熟悉所有的junits和最后但并非最不重要的:我很懒。

我的问题是:

  1. 我应该使用maven-surefire-plugin并在测试包中进行大量清理吗?
  2. 是否可以告诉hudson(不是在正在构建的项目的pom.xml中)来运行特定的单元测试并忽略其他测试?
  3. 我应该创建一些其他构建 - (ant?)并使用它来运行hudson上的单元测试吗?
  4. 我不知道市场上还有其他选择吗?
  5. 任何建议都会受到赞赏。

    阿维亚德

2 个答案:

答案 0 :(得分:4)

  
      
  1. 我应该使用maven-surefire-plugin   并在测试中进行大量清理   包?
  2.   
  3. 是告诉哈德森的任何方式(不是   正在构建的项目的pom.xml)   运行特定的单元测试和   忽略别人?
  4.   

如果您只想在单模块项目中运行单元测试,则可以执行

mvn test

这将使所有maven lifecycle phases最多test,包括compiletest-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