首页 > 解决方案 > 如何使用 groovy 执行 spock 规范并生成 junit xml 文件

问题描述

我有一个 Spock 规范,可以使用groovy可执行文件直接在命令行上执行。这是有效的,因为规范类委托给了sputnik测试运行器,而测试运行器又委托给了 junit 4 运行器。

我收到的输出是文本结果。相反,我想收到一个 JUnit xml 结果文件。我正在尝试使用直接脚本执行并避免使用 maven 和 gradle,因为我希望它是轻量级的。

有人可以让我知道如何配置系统以提供此结果吗?

标签: groovycommand-linespock

解决方案


Spock 不会生成这样的报告,它在 Maven 世界中的 Surefire(或其 gradle 对应物)运行测试、收集结果并生成报告。我假设您正在谈论 target/surefire-reports 文件夹。

现在有两种方法:

  1. 直接运行maven的surefire插件。类似的东西mvn surefire:test不会编译任何东西(假设你已经编译了代码和测试),只会运行测试。您还可以过滤以运行一个特定的测试/指定通配符,阅读 surefire 插件文档。

  2. Spock 有一个 Listeners 的概念。这些侦听器在测试生命周期期间被调用,您可以提供钩子来自己收集结果,并且在测试完成时(无论成功还是失败 - 您都会有一个钩子) - 创建一个包含信息的文件,它将是您的报告)。

有些项目正是以这种方式工作的,尽管它们不会以万无一失的形式生成 XML: spock-reports damage-control


推荐阅读