Hudson、C++ 和 UnitTest++
-
03-07-2019 - |
解决方案
我们正在我的工作场所积极这样做。
目前,我们使用自由式软件项目来:
- 每 15 分钟检查一次我们的 Subversion 存储库更新
- 调用 Windows 批处理文件来清理并构建解决方案文件
- 项目文件构建并运行单元测试作为构建后事件
- 单元测试失败由测试返回
main()
, ,因此被视为构建错误
我还测试了使用 UnitTest++ 中包含的 XmlTestReporter 来生成输出文件的配置。这 xUnit插件 尽管我必须更改版本 0.1.3 中附带的 XSL 文件才能获取测试历史记录中记录的持续时间,但本机支持此输出以及您可以转换的任何其他输出。
关于我们的集成,我们希望改进很多方面;构建日志又长又难解析,没有着色或突出显示等,但到目前为止它仍然对我们有益。
其他提示
我检查了 xUnit 插件,正如Patrick Johnmeyer在接受了答案。为了完整性,这里是驱动程序代码:
#include <fstream>
#include "UnitTest++.h"
#include "XmlTestReporter.h"
int main( int argc, char *argc[] ) {
std::ofstream f("file.xml");
UnitTest::XmlTestReporter reporter(f);
return UnitTest::RunAllTests(reporter, UnitTest::Test::GetTestList(), NULL, 0);
}
在Hudson配置中,选中“发布测试工具结果报告”。并将其指向&quot; file.xml&quot;
Hudson现在有一个 CppUnit插件可以做的伎俩
在我开始使用Hudson之前很久,我参与了一个C ++项目,我们使用了cpp-unit-lite和CruiseControl
我们改变了Cpp-unit-lite以生成类似XML报告文件的JUnit,CruiseControl选择了XML报告文件。
您可以对UnitTest ++执行相同操作,Hudson将拾取报告文件。
然而,这似乎很多工作。看看Hudson的情节插件。您可以让脚本从UnitTest ++输出中提取失败/通过测试的数量,并使用plot插件绘制每个构建的通过/失败测试的简单图表。
不如内置单元测试报告那么好,但你可以快速工作。
我将 hudson 与 CppUnit 和 xml 输出一起使用。xml 由 xslt 转换为 JUnit 输出,例如。CppUnit 站点提供了一个 xslt,可将 CppUnit 输出转换为 JUnit 输出。我对它进行了一些修改,以获得更多详细信息,例如:
- 命名空间作为包
- 执行时间处理时间
您可以转换 xml 输出以获得以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<testsuite>
<testcase name="my test name"
classname="Package1.Package2.TestClass"
time="0.25">
<error type="error"/>
</testcase>
....
</testsuite>
如果成功:只需删除子标签
问候
我们一直在办公室使用类似的方法,除了使用cxxtest而不是UnitTest ++,现在我们正在迁移到google的优秀(imho)gtest框架。
使用cxxtest,我们做了类似于Patrick J.建议的事情,这基本上是添加一个构建步骤,它将通过ant运行测试套件程序,并导致构建失败,如果任何测试失败。这种方法的缺点是当构建因测试结果而失败时,你必须通过控制台输出来寻找出错的地方。如果您的测试框架可以输出与junit兼容的XML,那么您也会丢失hudson可以生成的漂亮图表。
切换到gtest的一个激励因素是它确实生成了junit XML,因此从理论上讲,hudson可以解析测试结果并以更合理的方式发布它们。无论如何,它看起来不像UnitTest ++生成这样的东西(如果我错了请纠正我),所以这可能是一个没有实际意义的点,但至少将它集成到你的构建过程中将确保测试在生成。