詹金斯C++测试布线
Jenkins C++ Testing Wiring
我想用 Jenkins 在 C++ 上运行 google 测试。
目前,我正在经历分为两个工作的
4个阶段
- 作业 A, 生成
- a) 代码构建(在我的情况下生成库)
- b) 测试构建(与上述库的链接)
- 作业 B,由 A 稳定完成触发的测试
- a) 测试执行
- b) 报告生成(通过 JUnit 插件)
我正在通过"执行外壳"执行测试,该测试生成提供给报告生成的
XML报告我认为我的接线搞砸了,因为
- 失败的测试生成 (1b) 会将代码生成标记为失败,
- 将测试作为构建步骤(2a)执行感觉就像黑客一样。
有没有一种干净的方法来独立于代码构建的谷歌测试的构建-运行-报告?
我们的项目结构如下:
在生成文件中,我们等效于
all: ${PROGRAMS} ${TEST_PROGRAMS}
run: all coverage
check: ${TEST_PROGRAMS}
for p in $^; do ./$$p || exit 1; done
coverage: check
lcov ...
在开发人员机器上,我们只是"运行",它构建,测试和计算覆盖范围。
在哈德逊(唉,我们继承了它,我无法说服每个人改用 Jenkins),我们有三份工作:
- 构建
- :运行"全部"以构建所有可执行文件和测试程序。如果成功,则触发"测试" 测试
- :运行"检查"以执行所有测试程序。如果成功,则触发"覆盖"
- cover:运行"进行覆盖率-o检查"以生成覆盖率信息(无需再次运行测试)。
对于早期失败,我们这样构建它:构建由签入触发,并且可能非常快,而运行测试套件需要固定(且相当长)的时间。此外,如果代码没有构建,那么尝试运行它是没有意义的:)
在我看来,未能构建测试程序应该使代码构建失败,因为这可能表明库存在问题,而不一定是测试程序的问题。如果您希望看到库和测试的单独状态,可以创建单独的作业。
哈德森没有"测试"的概念。运行测试程序与运行"make"没有什么不同(如果从makefile运行测试,则与运行编译器和链接器没有什么不同)。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 换位表导致测试失败(但在游戏中运行良好)
- 用于交叉编译和CMake的预处理器宏的单元测试
- 谷歌测试中的期望值存储在哪里
- 如何在for循环中包含两个索引值的测试条件
- 在cygwin中测试新的boost安装时出现cpp错误
- 使用rdtsc进行基准测试的缺点是什么
- 詹金斯C++测试布线