我不是一个C程序员,但我必须对我的詹金斯运行升压试验。 现在,我已经安装在詹金斯的xUnit插件。
我添加了一个生成后的行动:“发布的xUnit测试结果报告”。然后,在此建立后步骤我说:“BoostTest-1.x中(默认)”
现在,我有以下选项设置:
https://www.dropbox.com/s/wxcny55rz2bqk6r/boost_jenkins_options.png
我设置的选项是随机的,所以请帮助我,我什么都不懂,我没找到一些教程。
我还没有与升压单元测试工作,不与詹金斯的xUnit或者插件。
谁能帮我?
编辑:詹金斯说我:
make[1]: Leaving directory `/var/lib/jenkins/workspace/southernd_test'
[xUnit] [INFO] - Starting to record.
[xUnit] [INFO] - Processing BoostTest-1.x (default)
[xUnit] [INFO] - [BoostTest-1.x (default)] - No test report file(s) were found with the pattern 'boost/*.xsl' relative to '/var/lib/jenkins/workspace/southernd_test' for the testing framework 'BoostTest-1.x (default)'. Did you enter a pattern relative to the correct directory? Did you generate the result report(s) for 'BoostTest-1.x (default)'?
[xUnit] [ERROR] - No test reports found for the metric 'BoostTest' with the resolved pattern 'boost/*.xsl'. Configuration error?.
[xUnit] [INFO] - Setting the build status to FAILURE
[xUnit] [INFO] - Stopping recording.
Build step 'Publish xUnit test result report' changed build result to FAILURE
Finished: FAILURE
该错误是因为所产生的任何输出文件boost::test
。 测试脚本需要与正确的选项来调用:
unit_test --report_level=detailed --report_format=xml 2> xunit.xml
不幸的是通过升压::测试生成的XML输出文件是不正确的格式(详见: SO转换的boost ::测试日志及升压用户的帮助与插件的xUnit )
JUnit的插件预计XML测试输出是在以下格式:
<testsuites>
<testsuite time="0.0000" timestamp="0.000" errors="0" failures="0" tests="13" hostname="localhost" name="my_test_suite">
<testcase id="65536" class="test" name="test_case_1" time="0.0000" />
<testcase id="65537" class="test" name="test_case_2" time="0.0000" />
<testcase id="65538" class="test" name="test_case_3" time="0.0000" />
</testsuite>
</testsuites>
有一对夫妇的方式来解决这个如:
- 通过转换XML输出
boost::test
- 直接定制的输出
boost::test
,以便正确的格式制作。
我选择了选项2 - SS你是不是一个“C / C ++程序员,你可以得到的测试套件你正在尝试运行采用这种做法的作者,下面的步骤应该有助于让他们开始:
- 创建后测试访问者处理试运行的结果。
- 创建通过测试结果在其析构函数走到输出格式正确的测试结果BOOST_GLOBAL_FIXTURE类。
- 实例夹具类主要的测试模块中。
即:
struct JUnitVisitor : public boost::unit_test::test_tree_visitor
{
void visit( boost::unit_test::test_case const& tc )
{
// output <testcase> xml in JUnit format
}
bool test_suite_start( boost::unit_test::test_suite const& ts )
{
// output <testuite> xml in JUnit format
}
void test_suite_finish( boost::unit_test::test_suite const& ts )
{
// output </testuite> xml in JUnit format
}
};
struct MyJUnitOpFixture
{
MyJUnitOpFixture() {}
~MyJUnitOpFixture()
{
// open results file
/// output <testsuites> start tag
// use a visitor to walk the test results tree
JUnitVisitor visitor ( out );
boost::unit_test::traverse_test_tree(
boost::unit_test::framework::master_test_suite(),
visitor
);
/// output </testsuites> end tag
}
}
那么全球固定在主测试文件中加入实例:
BOOST_GLOBAL_FIXTURE( MyJUnitOpFixture );
在我的情况的xUnit不喜欢的加速测试的格式"--report_format=XML"
,但它确实需要"--log_format=XML --log_sink=test.xml"