我想用Jenkins在C ++上运行google测试。
目前,我正在经历4个阶段,分为两个工作
工作A,建造
a)代码构建(在我的情况下产生库)
b)测试版本(与上述库的链接)
作业B,由A稳定完成触发的测试
a)测试执行
b)报表生成(通过JUnit插件)
我正在通过“ Execute Shell”执行测试,该测试产生了一个XML报告,该报告被馈送到“报告生成”
我认为我的接线混乱了,因为
测试构建失败(1b)会将代码构建标记为失败,
将测试作为构建步骤(2a)执行就像黑客一样。
有没有一种干净的方法来为Google测试与代码构建分开构建运行报告?
最佳答案
我们的项目的结构如下:
在makefile中,我们有相当于
all: ${PROGRAMS} ${TEST_PROGRAMS}
run: all coverage
check: ${TEST_PROGRAMS}
for p in $^; do ./$$p || exit 1; done
coverage: check
lcov ...
在开发人员机器上,我们只需“ make run”,即可构建,测试和计算覆盖率。
在哈德逊(阿拉斯,我们继承了它,而我无法说服所有人改用詹金斯),我们有三个工作:
build:运行“全部制作”以生成所有可执行文件和测试程序。如果成功,则触发“测试”
测试:运行“进行检查”以执行所有测试程序。如果成功,则触发“覆盖”
cover:运行“ make coverage -o check”以生成覆盖率信息(无需再次运行测试)。
我们采用这种结构来解决早期故障:构建是由签入触发的,并且可能很快,而运行测试套件则需要固定(很长)的时间。此外,如果代码未生成,则没有必要尝试运行它:)
我认为,无法构建测试程序将导致代码构建失败,因为这可能表示库(而不一定是测试程序)存在问题。如果您想查看库和测试的单独状态,则可以创建单独的作业。
哈德森没有“测试”的概念。运行测试程序与运行“ make”无异(如果您从makefile运行测试,则与运行编译器和链接器无异)。
关于c++ - Jenkins C++测试接线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27122126/