我用boost单元测试库完成了大约一百个简单的测试。不仅我得到很长的编译时间(按照半分钟的顺序),而且生成的可执行文件的大小变得非常大 - 仅仅一百个简单测试就可以达到4MB。如果测试是在不使用boost测试的情况下完成的,则可执行文件大小仅为120kB。
我怎样才能减轻臃肿?这个问题仅仅是因为我感兴趣,而不是我需要测试代码来获得闪亮的性能:)
调试信息已被删除。我已经尝试了所有优化选项但没有成功。
修改:
每项测试基本如下:
PlainOldDataObject a, b;
a = { ... initial_data ... };
a = some_simple_operation(a);
b = { ... expected_result ... };
BOOST_CHECK(std::memcmp(&a, &b, sizeof(PlainOldDataObject)) == 0);
答案 0 :(得分:3)
予。您使用哪种使用方式?如果您使用单元测试框架的单一标头变体,则应切换到离线变体(静态或动态)
II。如果您怀疑BOOST_AUTO_TEST_CASE宏有问题,您有几个选择:
放弃每个测试用例策略的单个断言并使用“主题”测试用例的数量。我个人认为这是可以接受的。
使用手动测试用例注册。您可以使用自己的宏来自动化它,以避免繁琐的重复。
拆分为多个测试文件。您可能会看到至少一些编译时间改进(或可能不会)。
III。如果您怀疑BOOST_CHECK语句,那么您可以做的事情并不多,但我会惊讶地发现它们的开销很大。也许你应该进一步调查。
答案 1 :(得分:0)
尝试使用Loki library:它还有许多常用的通用组件(包括静态断言宏,类似于BOOST_CHECK)。
众所周知,Loki是轻量级的,但比强化更强大,因为它使用基于策略的方法来进行类设计。但是,它没有所有这些工具,只有最常见的工具:智能指针,小型对象分配器,元编程助手,工厂和其他一些工具。但如果您不需要任何像序列化这样可怕的升级库,您可能会发现它满足您的需求。