C++单元测试框架 CppTest

webphp 10年前
     <p>CppTest 是 C++ 的单元测试框架。CppUnit 简单得多,但是效果也不错。下面简要地对比这两个强大的工具:</p>    <ul>     <li><strong>创建单元测试和测试套件的简便性。</strong><code style="font-family:monospace;font-size:small !important;">CppUnit</code> 和 <code style="font-family:monospace;font-size:small !important;">CppTest</code> 都创建类方法形式的单元测试,类本身都派生自工具提供的 <code style="font-family:monospace;font-size:small !important;">Test</code>类。但是,<code style="font-family:monospace;font-size:small !important;">CppTest</code> 的语法略微简单些,测试的注册在类构造器内进行。对于 <code style="font-family:monospace;font-size:small !important;">CppUnit</code>,需要额外的宏 <code style="font-family:monospace;font-size:small !important;">CPPUNIT_TEST_SUITE</code> 和<code style="font-family:monospace;font-size:small !important;">CPPUNIT_TEST_SUITE_ENDS</code>。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial, nsimsun, sans-serif;margin-bottom:0px;padding-top:0px;"><strong>运行测试。</strong><code style="font-family:monospace;font-size:small !important;">CppTest</code> 直接调用测试套件上的 <code style="font-family:monospace;font-size:small !important;">run</code> 方法,而 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 使用单独的 <code style="font-family:monospace;font-size:small !important;">TestRunner</code> 类,通过调用这个类的 <code style="font-family:monospace;font-size:small !important;">run</code> 方法运行测试。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial, nsimsun, sans-serif;margin-bottom:0px;padding-top:0px;"><strong>扩展测试层次结构。</strong>对于 <code style="font-family:monospace;font-size:small !important;">CppTest</code>,随时可以从以前的测试套件派生新类,从而扩展测试套件。新的类定义一些新函数,这些函数成为新的单元测试。只需在新类类型的对象上调用 <code style="font-family:monospace;font-size:small !important;">run</code> 方法。与之相反,<code style="font-family:monospace;font-size:small !important;">CppUnit</code> 需要使用 <code style="font-family:monospace;font-size:small !important;">CPPUNIT_TEST_SUB_SUITE</code>宏和类继承来实现相同的效果。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial, nsimsun, sans-serif;margin-bottom:0px;padding-top:0px;"><strong>生成格式化的输出。</strong><code style="font-family:monospace;font-size:small !important;">CppTest</code> 和 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 都允许定制输出。但是,<code style="font-family:monospace;font-size:small !important;">CppTest</code> 有预定义的 HTML 输出格式化器,而 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 没有。但是,只有 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 支持 XML 格式化。它们都支持文本和编译器式格式。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial, nsimsun, sans-serif;margin-bottom:0px;padding-top:0px;"><strong>创建测试装备。</strong>要想使用测试装备,<code style="font-family:monospace;font-size:small !important;">CppUnit</code> 要求测试类派生自 <code style="font-family:monospace;font-size:small !important;">CppUnit::TestFixture</code>。您必须提供设置和退出例程的定义。对于 <code style="font-family:monospace;font-size:small !important;">CppTest</code>,只需提供设置和退出例程的定义。这个解决方案显然更好,因为这让客户机代码更简单。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial, nsimsun, sans-serif;margin-bottom:0px;padding-top:0px;"><strong>预定义的宏支持。</strong><code style="font-family:monospace;font-size:small !important;">CppTest</code> 和 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 都提供一组用于断言、处理浮点等的宏。</li>     <li style="padding-bottom:3px;margin-top:0px;padding-right:5px;font-family:arial,nsimsun,sans-serif;margin-bottom:0px;padding-top:0px;"><strong>头文件。</strong> <code style="font-family:monospace;font-size:small !important;">CppTest</code> 只要求包含一个头文件,而 <code style="font-family:monospace;font-size:small !important;">CppUnit</code> 客户机代码必须根据使用的特性包含多个头文件,比如 HelperMacros.h 和 TextTestRunner.h。</li>    </ul>        项目地址:    <a href="/misc/goto?guid=4958189105258651653" target="_blank">http://cpptest.sourceforge.net/</a>    <br />