詹金斯C++;测试接线 < P>我想用詹金斯来运行C++上的谷歌测试。 目前,我正在经历分为两份工作的4个阶段 作业A,构建 a) 代码构建(在我的例子中,生成库) b) 测试构建(与上述库的链接) 作业B,测试由稳定完成触发的 a) 测试执行 b) 报告生成(通过JUnit插件)

詹金斯C++;测试接线 < P>我想用詹金斯来运行C++上的谷歌测试。 目前,我正在经历分为两份工作的4个阶段 作业A,构建 a) 代码构建(在我的例子中,生成库) b) 测试构建(与上述库的链接) 作业B,测试由稳定完成触发的 a) 测试执行 b) 报告生成(通过JUnit插件),c++,jenkins,googletest,C++,Jenkins,Googletest,我通过“Execute Shell”执行测试,它生成一个XML报告,并提供给报告生成 我想我的线路有问题,因为 失败的测试生成(1b)将代码生成标记为失败 作为构建步骤(2a)执行测试感觉像是一种黑客行为 是否有一种干净的方法来构建google测试的运行报告独立于代码构建?我们的项目结构如下: 在makefile中,我们有 all: ${PROGRAMS} ${TEST_PROGRAMS} run: all coverage check: ${TEST_PROGRAMS}

我通过“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 ...
在开发人员的机器上,我们只是“makerun”,它构建、测试和计算覆盖率

在哈德逊(唉,我们继承了它,我无法说服每个人都转向詹金斯),我们有三份工作:

  • 构建:运行“makeall”来构建所有可执行文件和测试程序。如果成功,则触发“测试”
  • 测试:运行“进行检查”以执行所有测试程序。如果成功,则触发“覆盖”
  • cover:运行“makecoverage-ocheck”生成覆盖率信息(无需再次运行测试)
我们这样构造它是为了早期失败:构建是由签入触发的,可以非常快,而运行测试套件需要固定(相当长)的时间。此外,如果代码没有生成,那么尝试运行它也没有意义:)

在我看来,未能构建测试程序应该导致代码构建失败,因为这可能表明库有问题,而不一定是测试程序有问题。如果希望看到LIB和测试的单独状态,可以创建单独的作业

哈德逊没有“测试”的概念。运行测试程序与运行“make”没有什么不同(如果从makefile运行测试,则与运行编译器和链接器没有什么不同)