FitNesse:如何以 JSON 格式将测试执行报告从 Jenkins 发送到端点?

FitNesse: How to send tests execution reports from Jenkins to an endpoint in JSON format?

我的任务是将定期执行 FitNesse 测试的报告以某种特定 JSON 格式发送到某些特定端点。

我在 Jenkins 属性中设置了定期执行测试并将其保存在 XML 中,但现在我需要解析有关其结果的信息。

它不能只是在 Jenkins 中执行 "after build" 属性(或者可以,但我不知道它的插件),但它会是什么以及我如何做到这一点?

特别是,我不需要有关测试的信息,只需要一般时刻,如测试日期、通过率、状态、项目名称等。

FitNesse 带有一个 jUnit 运行程序,它允许您执行 test/suite。如果您创建一个用 @RunWith(FitNesseRunner.class) 注释的测试 class 并将其执行包含在 Jenkins Maven 作业中(其中 jUnit class 由 surefire 或 failsafe 插件执行),测试的结果执行将由 Jenkins 自动获取,就像它获取 other/regular jUnit 测试一样(因为 surefire 或 failsafe 将它们包含在他们的 XML 报告中,Jenkins 将获取这些)。

您可以在 https://github.com/fhoeben/sample-fitnesse-project. How to run the tests on Jenkins is described at https://github.com/fhoeben/hsac-fitnesse-fixtures#to-run-the-tests-on-a-build-server:

找到使用这种方法(稍微定制的版本)的示例 Maven FitNesse 项目

Have the build server checkout the project and execute mvn clean test-compile failsafe:integration-test. The result in JUnit XML results can be found in: target/failsafe-reports (Jenkins will pick these up automatically for a Maven job)

您表示不需要 HTML 结果,但它们将可用。它们可以在:target/fitnesse-results/index.html 中找到,您可以选择使用 'HTML Publisher' Jenkins 插件从每个构建中 link 到它们。

我认为解决这个问题的最好方法是制作一个脚本来解析 XML 文件,并创建所需的 JSON 文件。我们通常为此使用 python 脚本。

如果您需要脚本中构建的某些通用信息,例如构建号,您可以使用 Jenkins 环境将其传递给您的脚本。

要调用脚本只需添加一个批处理或 shell 步骤,并将其放在您的 fitnesse 构建步骤下方,以确保在调用脚本之前生成 XML。