📄 news
字号:
The short description is used to indicate how the detail strings should be interpreted. It usually indicates the failure types, such as "assertion failed", "forced failure", "unexpected exception caught", "equality assertion failed"... It should not contains new line characters (\n). Detail strings are used to provide more information about the failure. It can contains the asserted expression, the expected and actual values in an equality assertion, some addional messages... Detail strings can contains new line characters (\n). This change allow ouputters to deal with all failure the same way (there is no special case for the equality assertion any more).* New XmlDocument class to easily create new XML output format - Classes XmlDocument and XmlElement where extracted from XmlOutputter. This help writing outputters that use a completly different XML format. - XmlDocument represents a XML file, and XmlElement represents a XML element.* XmlOutputter customization - Xml output can be customized using XmlOutputterHook. To do so, subclass XmlOutputterHook and register it to the XmlOutputter with addHook() before call XmlOutputter::write(). Hook can be used to add some datas to the XmlDocument or the XmlElement of a specific hook. Methods have been added to XmlElement to help navigating and modifying the XmlDocument. See ClockerPlugIn example.* MFC TestRunner - The name of the test is displayed just before being run. - Browse Test Hierarchy dialog is resizable. - Better (and cleaner) handling of windows resizing - Failure list now only show the short description of the failure. - Edit field added to display the details of the selected failure.* MFC test plug-in runner (TestPlugInRunner): - command line: a dll name can be specified on the command after -testsuite: example: TestPlugInRunnerd.exe -testsuite Simpled.dll - Layout configuration is stored/restored.* Test plug-in XML output Hook - TestPlugIn interface provides a mean for plug-in to register hook for XML output. Practically, this allow plug-in to add specific data to the output. See ClockerPlugIn example, which add timing datas to the xml output.* DllPlugInTester: - added option -w / --wait to wait for the user to press a key before exiting. - plug-in can now provides XmlOutputterHook to add specific datas to the XML ouput. See ClockerPlugIn example.* CompilerOutputter wrapping is parametrized - Wrap column can be set with setWrapColumn(). Default is now 79 instead of 80. - Wrapping can be disabled with setNoWrap().* Examples: - ClockerPlugIn: the example now use the new XmlOutputterHook. Test time are now included in the XML output. See examples/ClockerPlugIn/ReadMe.txt for details.* Bug Fix: - CompilerOutputter: fixed wrapping issues (UT magic!) - DllPlugInTester: use ISO-LATIN1 encoding if none is given. Flag --xsl was ignored. - MfcUi plug-in runner (TesTPlugInRunner): better handling of history when loading and reloading a dll. - Qt Test Runner: minor bug fixes. Should compile on Unix. - XmlOutputter: use the default encoding if an empty string is given as encoding* Compatibility Break: - CompilerOutputter: removed printNotEqualMessage() and printDefaultMessage(). No longer needed since Exception message are processed in a generic way. Removed wrap(). Extracted to StringTools. - Exception constructor takes a Message instead of a string. Notes that the first argument in Message constructor is a short description, not the message. Therefore, the change will usualy have the following form: Exception( Message( "assertion failed", oldMessage ) ); You may want to use Asserter functions instead of constructing and throwing the exception manually. - TestPlugInAdapter: renamed TestPlugInDefaultImpl. - TestSuiteBuilder: removed default constructor. All remaining constructors take an additional argument of type TestNamer used to specify the fixture named and generate test case name. Remove template method addTestCallerForException(). Use addTest() instead (see CPPUNIT_TEST_EXCEPTION implementation). - TextTestResult: most printing method were removed. This task is now delegated to TextOuputter. - XmlElement: renamed addNode() to addElement(). - XmlOutputter: removed methods writeProlog() and writeTestResult() which are replaced by XmlDocument. Renamed makeRootNode() to setRootNode(). It no longer returns the root node, but set the root node of the XML document. - XmlOuputter::Node: class has been extracted and renamed XmlElement.* Deprecated: - Asserter: all functions that use a string for the failure message. Construct a Message instead (see Exception constructor compatiblity break and Exception message feature). New in CppUnit 1.9.6: --------------------- - DllPlugInTester can be parametrized from command line - Two test listener plug-in examples - An 'hello world' example & getting started document : Money - Contribution: generic makefile for Borland 5.5 free compiler. - Bug fixes* DllPlugInTester: - Advanced command line to support miscellaneous listener outputer. Parameters can now be passed to test plug-in: -c --compiler Use CompilerOutputter -x --xml [filename] Use XmlOutputter (if filename is omitted, then output to cout or cerr. -s --xsl stylesheet XML style sheet for XML Outputter -e --encoding encoding XML file encoding (UTF8, shift_jis, ISO-8859-1...) -b --brief-progress Use BriefTestProgressListener (default is TextTestProgressListener) -n --no-progress Show no test progress (disable default TextTestProgressListener) -t --text Use TextOutputter -o --cout Ouputters output to cout instead of the default cerr. filename[="options"] Many filenames can be specified. They are the name of the test plug-ins to load. Optional plug-ins parameters can be specified after the filename by adding '='. [:testpath] Optional. Only one test path can be specified. It must be prefixed with ':'. See TestPath constructor for syntax. 'parameters' (test plug-in or XML filename, test path...) may contains spaces if double quoted. Quote may be escaped with \". Some examples of command lines:DllPlugInTesterd_dll.exe -b -x tests.xml -c simple_plugind.dll CppUnitTestPlugInd.dll Will load 2 tests plug-ins (available in lib/), use the brief test progress, output the result in XML in file tests.xml and also output the result using the compiler outputter.DllPlugInTesterd_dll.exe ClockerPlugInd.dll="flat" -n CppUnitTestPlugInd.dll Will load the 2 test plug-ins, and pass the parameter string "flat" to the Clocker plug-in, disable test progress. Clocker being a test listener plug-ins (it doesn't implements any tests, it just register a TestListener), this is equivalent to say 'run all the test of CppUnitTestPlugIn and use ClockerPlugIn as a TestLisener'.DllPlugInTesterd_dll.exe CppUnitTestPlugInd.dll :Core Will run the test named "Core" (a suite in the present case ) of the test plug-in.* Documentation - New getting started documentation. Not completed yet, but probably a good complement to the current cookbook. Explore the creation of the Money example.* Examples - Money (examples/Money): the 'hello world' example. Unit tests for a simple Money class. - DllPlugInTesterTest (src/DllPlugInTester/DllPlugInTester.dsp): unit tests for CommandLineParser. Not really an example, but only slightly more complex than Money. - ClockerPlugIn (examples/ClockerPlugIn): a test listener plug-in that track tests and test suites running time. Parameter: "flat" for a reporting with a flattened tree. - DumperPlugIn (examples/DumperPlugIn): a test listener plug-in that dump the test tree as it run. Paramater: "flat" for a reporting with a flattened tree. - CppUnitTestPlugIn (examples/cppunitest/CppUnitTestPlugIn.dsp): CppUnit's test suite as a test plug-in.* Contribution - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/): - Makefile for CppUnit with Borland C++ 5.5 free compiler: does not depend on a specific CppUnit version.* Compatiblity breaks - DllPlugInTester: (1.9.4 only), should add -c to DllPlugInTester command line.* Bug Fix: - DynamicLibaryManager did not report the library name when loading a a library. - BeosDynamicLibraryManager: fixed thanks to Shibu Yoshiki ('cuppa' project team). - Broken build on Unix should be fixed for most (thanks to Jeffrey Morgan). New in CppUnit 1.9.4: ---------------------- - More versatile, easier to make test plug-in. - A PlugInManager to manage multiple test plug-ins. - Crossplatform test plug-in runner. - Crossplatform test plug-in example. - A brief progress listener - Easier test hierarchy creation - Improved documentation. - Tracking of test run start/end. - Contribution: XML style sheet & borland 5.5 makefile. - Help needed on the Unix side!* Buildling on Unix: - I did not get any feed back on the previous build issue on Unix. Using a simple autobook example was useless to try to solve the problem. Here is the issue: CppUnit library build fine, it is the example I'm having trouble with. Since the test plug-in have been added, CppUnit use the function dlopen(), dlsym() and dlclose() on unix to load/unload the plug-in. Those functions apparently requires to link another library when building an exectuable. Here is was should be done: - linking against the said library for each example. - generates the shared library for the examples/simple/simple_plugin example (source files are ExampleTestCase.cpp, ExampleTestCase.cpp and SimplePlugIn.cpp). - if possible, makes the above optionnal if --disable-test-plug-in is defined: - don't link the dlXXX library - don't compile the plug-in example - add #define CPPUNIT_NO_TESTPLUGIN 1 to the config file Contact me on the mailing-list for more details.* TestPlugIn: - A simple fact I realised while testing: if you link your test plug-in against the DLL version of cppunit (or shared library on Unix), then test registered to the TestFactoryRegistry (it is what's hide behind CPPUNIT_TEST_SUITE_REGISTRATION) are automatically shared. Changes have been made to support that usage (CppUnit was crashing badly). Using the TestFactoryRegistry provides much more flexiblity that providing a single suite for the plug-in. As such: - CppUnit plug-in should be linked against the dll version of CppUnit library. - Plug-in should register their tests using the CPPUNIT_TEST_SUITE_xxx macros. - 'homemade' suite can still be registred to the TestFactoryRegistry that is passed as parameter on plug-in initialization. Notes that you must unregister those suites during plug-in uninitialization, otherwise on destruction, the TestFactoryRegistry will attempt to destroy them... Your plug-in would have been already unloaded... - Plug-in can accept parameters on initialization (notes that the Parameters object is far from being stabilized, but whatever form it takes, it will be a list of string). - Plug-in can register their one listener for a test run. This means that you can extends 'DllPlugInTester' by creating test plug-in... This also means than you can listen to startTestRun()/endTestRun() to do some global setUp/tearDown (to initialize globales resources, such as COM...) - Why all this fuss around test plug-in ? Test plug-in are the incarnation of an old concept: testable components...* PlugInManager: - The PlugInManager is used to load/unload plug-ins. It takes care of all the 'plug-in' protocol and makes it easy to use multiple plug-ins at the same time. It dispatches the addListener()/removeListener() message to each plug-in.* Crossplatform test plug-in runner (src/DllPlugInRunner): - This application can be used to run your test plug-ins. It can load multiple test plug-ins and run all or a specific test in the test hierarchy returned by TestFactoryRegistry::getRegistry().makeTest(). - Plug-in loaded by the plug-in may also be custom TestListener. - It can be use for post-build check and to debug the plug-in. - Why use it? It keep you away from CppUnit API changes!* Easier test hierarchy creation (TestFactoryRegistry/HelperMacros): - added method addRegistry(name) to add a named registry to the registry. see TestFactoryRegistry for an example of use. - added macros CPPUNIT_REGISTRY_ADD( which, to ) and CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which ) to create test hierarchy at static initialization (in the spirit of CPPUNIT_TEST_SUITE_xxx() macros).* VerboseTestProgressListener: - A new TestListener that prints the test name before running it. Most useful when a test crashing, mean a application crash.* Documentation: - More details about the test plug-in, how to use it, how does it works... See module/Writing Test Plug-in.* Examples: - examAdded crossplatform simple example. Equivalent to VC++ HostApp example. - examples/simple: a very simple example, demonstrating the use of CppUnit with a single TestFixture. Demonstrate both how to build an application using TestRunner, and how to build a test plug-in to use with the test plug-in runner.* Contribution - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/): - XML style sheet: transform CppUnit XML output into HTML. - Makefile for CppUnit with Borland C++ 5.5 free compiler.* Behavior changes: - Test runner should call TestResult::runTest() to run the 'top level' test. This will inform the TestListener of the test run start/end.* Compatiblity break: - TestFactoryRegistry don't own register test anymore. AutoRegisterSuite has been updated to preverse its apparent behavior. It should be of concern if you created and registered custom TestFactory. - Removed TextTestProgressListener::done(). No longer needed, it listens for endTestRun().* Compatiblity Break for 1.9.2 users: - TestPlugIn.h: CppUnitTestPlugIn as been completly rewritten. - TestPlugIn.h: macro CPPUNIT_PLUGIN_IMPLEMENT() don't take any arguments.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -