我想为一个控制机器人手臂和其他硬件的JavaFX应用程序设置一个体面的构建链Jenkins:
- 我们正在使用BitBucket和Git Flow模型。
- 我们在使用Maven构建的IntelliJ中有2个开发模块和1个系统测试模块。
- 我们有单元测试,集成测试和系统测试。单元和集成测试使用JUnit并且可以在Jenkins主机上运行,对于我们使用TestNG的系统测试,它们可以在Jenkins代理上运行TestFX测试。
(我认为TestNG比JUnit更适合系统测试)
开发构建项目(构建,单元+集成测试)已经到位。最近通过复制开发项目,添加系统测试并忽略单元/集成测试来建立测试链。 (因此构建应用程序已完成两次)
我们有两种类型的系统测试:
- 测试相当简单并在应用程序本身上运行
- 更复杂的测试并在与机器人手臂的多个模拟器交互的应用程序上运行
醇>
现在我需要设置第二种类型的测试。
我的问题是:在詹金斯设置这个的最佳方法是什么?
我正在阅读Jenkins Pipelines和Blue Ocean插件here,关于矩阵配置项目here。对我而言,实现目标的理想方式有点令人困惑。
我不知道如何从SystemTest模块中的testng.xml文件扩展到灵活测试。
我可以为测试添加一种功能标记,以便设置正确的前提条件吗?例如,对于类别1中的测试,只需要为TestFX启动主应用程序。但是,对于类别2中的测试,需要启动和配置多个模拟器。我认为使用一种功能标签会使这更容易维护。
我的目标:
- 易于维护Jenkins流程
- 高效建筑,所以优先复制工件而不是第二次建造
- 可以将系统测试分成多个代理,最好不要担心什么在哪里运行(类似于Selenium Grid)
- 根据测试是否需要正确的依赖关系(模拟器等)
- 由于应用程序中使用了画布,我们正在考虑使用OpenGL 3D加速在VM上运行测试。如果测试能够按需分配,启动,停止虚拟机,那将很酷(但只会节省一些电力)
- 轻松报告从所有代理收集所有测试结果的情况。请注意,我更喜欢JUnit报告,该报告突出显示哪些测试是@Ignored。 TestNg报告格式,对@Ignored测试没有任何说明。