如何让jenkins测试CDI运行时失败?

时间:2018-12-16 14:22:27

标签: java jenkins cdi

简介

对于我正在从事的(学校)项目,我们必须开发一个中等大小的Java应用程序,在本例中,该应用程序使用javaFX和Java CDI依赖项注入,我们有一个基于groovy文件的脚本化jenkins管道,该文件检查每个拉请求,这样就不能合并不符合质量要求或构建失败的分支。

问题

现在,我们遇到的问题是,目前只有25%的开发人员实际运行该应用程序以测试其添加是否有效,因为该项目处于开发的早期阶段,因此我们当前正在使用的许多功能都未被使用GUI呢。其他75%的开发人员使用JUnit单元测试和集成测试来检查其代码是否有效。尽管我们可以说每个人都需要在发出请求之前运行实际的应用程序,以检查Java CDI依赖项注入是否没有运行时错误。人是人,并不总是在听,所以我们经常将代码开发成可以通过maven成功但由于依赖注入问题而无法运行的代码。

问题

最简单的方法来检查jenkins版本是否会弹出Java CDI依赖项注入问题?

边注

我们已经使用了JUnit,但并非所有测试当前都使用焊缝注射进行测试,如果有可能进行单个测试来检查所有依赖注入问题,这些问题也可以代替基于詹金斯的解决方案而起作用。

1 个答案:

答案 0 :(得分:0)

您的CI(连续集成)方法不错。测试所有PR都是一种方法,您只需确定应该执行哪种测试即可。 JUnit样式还是集成测试?也许两者都是?

CDI本身具有部署验证阶段,在该阶段,它会在启动时检查一切是否正常-Bean是否具有钝化能力(应该钝化),是否满足所有声明的注入点,等等。在运行时,这可能会捕获许多用户错误,因此只需部署该应用程序即可显示它。您可以并且应该使用Arquillian来设置测试环境,就像实际运行时环境一样。请注意,此验证(实际上没有验证)无法检查动态分辨率错误。例如。如果您使用Instance<Object>,然后尝试不检查就解决不存在的bean。

如果这不是您想要的,则可以考虑使用weld-junit extension。这利用junit(4或5)引导Weld SE容器,您可以在其中玩弄并测试它们。查看自述文件和项目中的测试作为示例。这并不能反映纯EE环境,而更像是使用CDI进行的junit样式测试,并且易于上手。

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