gpt4 book ai didi

unit-testing - 在 ant 中为 java 项目运行 groovy 单元测试

转载 作者:行者123 更新时间:2023-12-02 21:51:25 25 4
gpt4 key购买 nike

我有一个 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 中。 ,可以理解的是,在文件集中中无法识别它们。

另一种方法是使用*.class文件进行batchtestfileset,如下所示:

<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 .

最佳答案

将包含模式更改为 *Test 而不是 *Test* 怎么样?正如@jon-skeet建议的here .

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

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

关于unit-testing - 在 ant 中为 java 项目运行 groovy 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com