【问题标题】:Running groovy unit tests in ant for a java project在 ant 中为 java 项目运行 groovy 单元测试
【发布时间】:2011-01-17 18:32:50
【问题描述】:

我有一个 Java 项目,其中包含一些使用 JUnit 编写的单元测试。最近添加了一些用 groovy(也使用 JUnit)编写的新单元测试,因为它更容易制作 更具表现力,通常更易于阅读。它还允许我们使用 spock 框架。

项目是用ant构建和测试的。

在添加 groovy 类之前,使用以下 ant 任务运行单元测试:

<target name="test" depends="test-compile">
    <junit printsummary="yes">
        <classpath>
            <path refid="test.classpath"/>
        </classpath>
        <formatter type="plain"/>
        <batchtest fork="yes" todir="${test.dir}/report">
            <fileset dir="${test.dir}/unit" includes="**/*.java"/>
        </batchtest>
    </junit>
</target>

但是,这种方法不适用于 groovy 测试,因为这些测试位于 *.groovy 文件中,而 JUnit Ant task 可以理解,在 fileset 中无法识别它们。

另一种方法是将*.class 文件用于batchtest fileset,如下所示:

<batchtest fork="yes" todir="${test.dir}/report">
    <fileset dir="${test.dir}/${build.dir}">
        <include name="**/*Test*.class" />
    </fileset>
</batchtest>

这会产生假阴性,因为闭包类文件也包含在内,因此可能的解决方法是排除这些文件。

<batchtest fork="yes" todir="${test.dir}/report">
    <fileset dir="${test.dir}/${build.dir}">
        <include name="**/*Test*.class" />
        <exclude name="**/*$*.class" />
    </fileset>
</batchtest>

有没有更好的方法来识别 junit ant 任务的测试类?也许基于反射和@Test 属性手动列出所有测试类(这将工作得很好)并不是一个真正可维护的解决方案。类似于Spock framework 中的SpecClassFileSelector

【问题讨论】:

    标签: unit-testing ant groovy


    【解决方案1】:

    如何将包含模式更改为 *Test 而不是 *Test* 正如@jon-skeet 建议的here

    这样它就不会匹配匿名闭包类。

    您必须重命名现有类并要求开发人员遵循此模式。

    【讨论】:

      【解决方案2】:

      看看:

      http://www.ibm.com/developerworks/java/library/j-pg11094/

      有一个 groovyc ant taskdef 用于编译 groovy 测试用例并运行它们。那里的例子是 Maven,但它不应该太难适应它来做你想做的事。

      【讨论】:

      • 谢谢。在写问题之前我已经看过这个页面。我提出的两个解决方案实际上做了 maven 解决方案所做的事情 - 查看类路径。
      【解决方案3】:

      你就不能这样写吗?

              <fileset dir="${test.dir}/unit" includes="**/*.java,**/*.groovy"/>
      

      【讨论】:

      • 不,因为它不起作用。根据 JUnit ant 任务文档:batchtest 从任意数量的嵌套资源集合中收集包含的资源。然后它为每个以 .java 或 .class 结尾的资源生成一个测试类名
      • 我最近一直在使用 Gradle。你真的应该看一下它,它比 Ant 更容易和灵活,尤其是比 Maven。 Groovy 插件允许您使用 Java 和 Groovy 类构建项目,以及使用 Groovy 和 Java 进行测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多