我用 boost 单元测试库完成了大约一百个简单测试。不仅我的编译时间很长(大约半分钟),而且生成的可执行文件的大小也变得非常大——仅 100 个简单测试就需要 4MB。如果在不使用 boost 测试的情况下完成测试,则可执行文件大小仅为 120kB。
如何减轻肿胀?这个问题只是因为兴趣,而不是我需要测试代码才能有 Shiny 的性能:)
调试信息已经被剥离。我已经尝试了所有优化选项,但都没有成功。
编辑:
每个测试基本如下:
PlainOldDataObject a, b;
a = { ... initial_data ... };
a = some_simple_operation(a);
b = { ... expected_result ... };
BOOST_CHECK(std::memcmp(&a, &b, sizeof(PlainOldDataObject)) == 0);
最佳答案
我。您使用哪种用法变体?如果您使用单元测试框架的单一 header 变体,您应该切换到离线变体(静态或动态)
二。如果您怀疑 BOOST_AUTO_TEST_CASE 宏有问题,您有几种选择:
放弃每个测试用例政策的单一断言,并使用“主题”测试用例的数量。我个人认为这是可以接受的。
使用手动测试用例注册。您或许可以使用自己的宏将其自动化,以避免乏味的重复。
拆分成多个测试文件。您可能至少会看到一些编译时间的改进(也可能不会)。
三。如果您怀疑 BOOST_CHECK 语句,您无能为力,但看到它们的开销如此之大,我会感到很惊讶。也许您应该进一步调查。
关于c++ - boost 单元测试模板会产生臃肿的代码。如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011957/