我如何让 jenkins 测试 CDI 运行时故障?

How can i make jenkins test for CDI runtime failures?

介绍

对于我正在处理的(学校)项目,我们必须开发一个中等大小的 java 应用程序,在我们的例子中使用 javaFX 和 java CDI 依赖注入,我们有一个基于 groovy 文件的脚本化 jenkins 管道,它会检查每个拉取请求,因此无法合并不符合质量要求或构建失败的分支。

问题

现在我们遇到的问题是,目前只有 25% 的开发人员实际上 运行 应用程序来测试他们添加的内容是否有效,因为该项目处于早期阶段,我们目前正在开发很多功能on 还没有被 GUI 使用。其他 75% 的开发人员使用 JUnit 单元测试和集成测试来检查他们的代码是否有效。虽然我们可以尝试说每个人都需要 运行 实际应用程序,然后再发出拉取请求以检查 java CDI 依赖注入是否没有 运行 时间错误。人就是人,并不总是倾听,所以我们经常将代码开发到 Maven 中成功,但由于依赖注入问题不能 运行。

问题

在 jenkins 构建中检查 java CDI 依赖项注入没有问题的最简单方法是什么 运行 时间?

旁注

我们已经使用了 JUnit,但目前并非所有测试都使用焊接注入进行测试,如果可以进行单个测试来检查所有依赖项注入问题,这也可以替代基于 jenkins 的解决方案。

您的CI(持续集成)方法很好。测试所有 PR 是一种可行的方法,您只需要决定应该执行哪种测试。 JUnit 风格,还是集成测试?也许两者都有?

CDI 本身有一个部署验证阶段,它会在 bootstrap 处检查是否一切正常——bean 是否具有钝化能力(那些应该的),是否可以满足所有声明的注入点等等在。这可以在达到 运行 时间之前捕获许多用户错误,因此只需部署应用程序即可显示它。您可以而且应该使用 Arquillian 来设置一个与实际 运行time 环境非常相似的测试环境。请注意,此验证(实际上没有验证)无法检查动态解析错误。例如。当您使用 Instance<Object> 然后尝试在不检查的情况下解析不存在的 bean。

如果这不是您想要的,那么您可以考虑weld-junit extension。这利用 junit(4 或 5)到 bootstrap Weld SE 容器,您可以在其中玩弄您的 bean 并测试它们。查看项目中的自述文件和测试以获取示例。这并不反映纯 EE 环境,而是更多的带有 CDI 的 junit 样式测试,并且易于上手。

请注意,使用 Jenkins,您可以为每个 PR 设置多个任务。例如,您可以 运行 所有 JUnit 测试以及所有集成 (Arquillian) 测试。