编译的提升.测试测试更快

Compiling Boost.Test tests faster

本文关键字:测试 编译      更新时间:2023-10-16

我使用xcode (gcc)来编译我的boost测试套件,它需要太长时间。

这些测试是最小的虚拟测试,但是编译它们需要几秒钟(大约20秒):

#include "boost/test/included/unit_test.hpp"
BOOST_AUTO_TEST_CASE(dummy)
{
    BOOST_CHECK_EQUAL(2+2, 4);
}
BOOST_AUTO_TEST_CASE(dummyFail)
{
    BOOST_CHECK_EQUAL(2+3, 4);
}

手册建议使用库版本来加快编译速度。然而,我担心这可能不起作用- xcode已经只重建我的测试。由于目标文件存在,整个框架不会再次编译。

我猜这是头文件和模板在Boost的数量。占用大部分编译时间的测试。

你知道如何显著提高编译速度吗?把它当图书馆用吗?将只包括部分提振。测试工作?

任何帮助都非常感谢!

编译缓慢的原因是boost/test/included/unit_test.hpp太大了。使用库可以提高速度,因为庞大的头文件是在构建库时编译的,而不是在构建库之后。然后,您的测试包含更小的标题集,从而缩短构建时间。

因为我懒得构建库,我使用的另一种方法是让一个源文件(从不更改,因此很少重新构建)包含完整的boost测试,然后让所有真正的测试源只包含boost/test/unit_test.hpp

尝试使用预编译的头文件,这应该会减少编译时间。详情可在此查阅:http://www.boost.org/boost-build2/doc/html/bbv2/reference/precompiled_headers.html

我相信所有的选项现在都在官方文档中描述了(参见用法变体)。

静态库使用变量非常方便,并且大大减少了编译时间。如前所述,可以创建一个只包含两行代码的源文件,单独编译并将其与其他测试链接起来。

关于链接文档的注释。我认为该页有错误,即这里:

一个且仅一个翻译单元应包括以下行:

#define BOOST_TEST_MODULE test module name
#include <boost/test/unit_test.hpp>

这会导致"未定义引用"。链接阶段错误。我认为应该改成:

#define BOOST_TEST_MODULE test module name
#include <boost/test/included/unit_test.hpp>