附录(Appendix)——WIN32平台安装说明
目前,CPPUnit在WIN32平台下仅支持Microsoft Visual C++,而且你的VC++编译器至少应该是6.0版本的。
使用GUI TestRunner编译运行示例程序的步骤如下:
- 在VC++中打开examples/examples.dsw(包含所有的示例)
- 将HostApp设为active project
- 编译之
- 在VC中选择Tools/Customize.../Add-ins and Macro Files,点击Browse...
- 选择lib/TestRunnerDSPlugIn.dll文件,并按ok以注册该附加件(add-ins)
- 运行project
[Project创建结果]
框架 & 工具:
- cppunit(cppunit.lib):单元测试的框架库,你将用它来编写单元测试。
- cppunit_dll(cppunit_dll.dll/lib):同上,只是以DLL方式呈现。
- TestRunner(testrunner.dll):一个MFC的扩展DLL,用来以GUI方式运行单元测试和查看结果。
- DSPlugIn(lib/TestRunnerDSPlugIn.dll):一个VC++的附加件,为testrunner.dll所使用。有了它之后,你若在MFC TestRunner中双击某个failure,就会启动VC++,打开failure所在文件并定位到某行。
- TestPlugInRunner:(警告:实验性的)一个VC++应用程序,用以运行测试插件。测试插件就是一个公开特定接口的DLL。该应用程序目前尚未完成(auto-reload特性丢失)。
所有库文件都被置于lib/目录下。
[示例]
- CppUnitTestMain:一个实际的测试包(test suite)用来测试CppUnit。使用了TextTestRunner(文本方式的单元测试环境),利用CompilterOutputter进行post-build testing(即在编译结束之后紧跟着进行测试)。在配置中设定连接了cppunit的静态库和动态库。
- CppUnitTestApp:包含了与CppUnitTestMain相同的测试包,但使用了MFC TestRunner(GUI方式的单元测试环境)
- hierarchy : 一个演示如何子类化测试的例子(你也许更愿意使用HelperMacros.h以及宏CPPUNIT_TEST_SUB_SUITE,这种方式更为简洁清晰。本示例已经很久没有更新了)。
- HostApp : 一个用MFC TestRunner演示各种失败测试的例子。也演示了MFC Unicode TestRunner。
- TestPlugIn : 一个演示如何为TestPlugInRunner编写TestPlugIn的例子(实验性的).
[配置(Configuration)]
CppUnit和TestRunner带有3种配置。
- Release():多线程DLL,release模式
- Debug(d):Debug多线程DLL,debug模式
- Unicode Release(u):Unicode多线程DLL,release模式
- Unicode Debug(ud):Unicode Debug 多线程DLL,debug模式
- Debug Crossplatform (cd): Debug 多线程DLL,没有使用type_info从类名中提取测试用例的包名。
对CppUnit而言,当创建dll时,字母“dll” 将被添加到后缀之后。
括号内的字母标明了添加到库名之后的后缀。例如,debug配置的cppunit静态库名为cppunitd.lib。debug配置的cppunit动态库名为cppunitd_dll.lib.
[创建(Building)]
- 在VC++中打开src/CppUnitLibraries.dsw工作区文件。
- 将TestPlugInRunner设为active project。
- 在'Build'菜单中选择'Batch Build...'
- 在Batch Build对话框中,选中所有的project 并按下build按钮。
- 所有的库文件可以在lib/目录下找到。
[测试(Testing)]
- 打开工作区文件examples/Examples.dsw。
- 将CppUnitTestApp设为active project.
- 为你要创建的库选择合适的配置。
- 编译运行project。TestRunner GUI将会出现。
[库(Libraries)]
所有编译后生成的库均可在'lib'目录中找到。多数库可以在src/CppUnitLibraries.dsw工作区中创建。
lib/:
- cppunit.lib : CppUnit静态库“Multithreaded DLL”
- cppunitd.lib : CppUnit静态库“Debug Multithreaded DLL”
- cppunit_dll.dll : CppUnit动态库(DLL)“Multithreaded DLL”
- cppunit_dll.lib : CppUnit动态导入库“Multithreaded DLL”
- cppunitd_dll.dll : CppUnit动态库(DLL)“Debug Multithreaded DLL”
- cppunitd_dll.lib : CppUnit动态导入库“Debug Multithreaded DLL”
- qttestrunner.dll : QT TestRunner动态库(DLL)“Multithreaded DLL”
- qttestrunner.lib : QT TestRunner导入库“Multithreaded DLL”
- testrunner.dll : MFC TestRunner动态库(DLL)“Multithreaded DLL”
- testrunner.lib : MFC TestRunner导入库“Multithreaded DLL”
- testrunnerd.dll : MFC TestRunner动态库(DLL)“Debug Multithreaded DLL”
- testrunnerd.lib : MFC TestRunner导入库“Debug Multithreaded DLL”
- testrunneru.dll : MFC Unicode TestRunner动态库(DLL)“Multithreaded DLL”
- testrunneru.lib : MFC Unicode TestRunner导入库“Multithreaded DLL”
- testrunnerud.dll : MFC Unicode TestRunner动态库(DLL)“Debug Multithreaded DLL”
- testrunnerud.lib : MFC Unicode TestRunner导入库“Debug Multithreaded DLL”
- TestRunnerDSPlugIn.dll : 注册到你的VC++中的附加件。
注意:当你使用CppUnit DLL(cppunit*_dll.dll)时,你必须连接相关的导入库,并在project中定义预处理标识CPPUNIT_DLL。
[使用CppUnit]
- 编写单元测试:
为了编写单元测试,你需要连接cppunitXX.lib,此处的XX即所选配置对应的后缀字母。 你必须在你的project中打开RTTI开关(Project Settings/C++/C++ Language)。 CppUnit的include目录必须包含在include查找路径中。你可以通过在Project Settings/C++/Preprocessor/Additional include directories或者Tools/Options/Directories/Include中添加include目录做到这一点。
简言之:
- 打开RTTI开关
- 连接lib/cppunitXX.lib
- include/ 必须包含在include查找路径中
- 使用TestRunner GUI:
为了使用GUI的test runner,你需要连接testrunnerXX.lib和cppunitXX.lib,此处的XX即所选配置对应的后缀字母。 你必须在你的project中打开RTTI开关。 文件testrunner.dll必须位于你的应用程序所在的路径(Debug或Release目录,project的dsp文件所在目录,或环境变量PATH中所指定的目录)。 一个最简单的办法是,要么添加一个post-build命令,或者,将位于lib/目录下的testrunner.dll添加到你的project中来,并定制创建步骤,将dll文件拷贝到你的“中间结果”目录(通常是Debug或Release目录)。
因为TestRunner GUI是一个MFC的扩展DLL,它能够访问当前应用程序的CWinApp。 参数设置将使用应用程序的注册键。这意味着,设置项“最近使用的测试”对每个应用程序而言都是不同的。
简言之:
- 打开RTTI开关
- 连接lib/cppunitXX.lib和lib/testrunnerXX.lib
- include/必须包含在include查找路径中
- 为了运行你的project,lib/testrunnerXX.dll必须可用
- 使用DSPlugIn:
你必须在VC++中注册该插件。在Tools/Customize/Add-ins and Macro files中点击browse,并选择lib/TestRunnerDSPlugIn.dll(你可以注册release版或者debug版,都能运行)。
若VC++正在运行,当你双击一个failure后,VC++将打开相关文件并定位到出错行。
- 使用Test Plug In Runner:
你的DLL必须导出(export)一个函数,该函数实现了在include/msvc6/testrunner/TestPlugInInterface.h中所定义的接口。作为范例,参见examples/msvc6/TestPlugIn/TestPlugInInterfaceImpl.*。注意:该runner仍处于实验阶段并未作足够多的测试。
|