CppUnit project page | FAQ | CppUnit home page |
Classes | |
struct | CppUnitTestPlugIn |
Test plug-in interface. More... | |
class | TestPlugInDefaultImpl |
Default implementation of test plug-in interface. More... | |
Defines | |
#define | CPPUNIT_PLUGIN_EXPORT extern "C" |
A macro to export a function from a dynamic library. | |
#define | CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn |
Name of the function exported by a test plug-in. | |
#define | CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL(TestPlugInInterfaceType) |
Implements the function exported by the test plug-in. | |
#define | CPPUNIT_PLUGIN_IMPLEMENT() |
Implements and exports the test plug-in interface. | |
Typedefs | |
typedef CppUnitTestPlugIn *(* | TestPlugInSignature )() |
Type of the function exported by a plug-in. |
Example:
#include <cppunit/include/plugin/TestPlugIn.h> CPPUNIT_PLUGIN_IMPLEMENT();
The interface CppUnitTestPlugIn is automatically implemented by the previous macro. You can define your one implementation.
To provide your custom implementation of the plug-in interface, you must:
Some of the reason you may want to do this:
See CppUnitTestPlugIn for further detail on how to do this.
Creating your own test plug-in with VC++:
#include <cppunit/plugin/TestPlugIn.h> CPPUNIT_PLUGIN_IMPLEMENT();
See examples/simple/simple_plugin.dsp for an example.
Notes to VC++ users:
How does it works ?
When CppUnit is linked as a DLL, the singleton used for the TestFactoryRegistry is the same for the plug-in runner (also linked against CppUnit DLL). This means that the tests registered with the macros (at static initialization) are registered in the same registry. As soon as a DLL is loaded by the PlugInManager, the DLL static variable are constructed and the test registered to the TestFactoryRegistry.
After loading the DLL, the PlugInManager look-up a specific function exported by the DLL. That function returns a pointer on the plug-in interface, which is later used by the PlugInManager.
|
A macro to export a function from a dynamic library. This macro export the C function following it from a dynamic library. Exporting the function makes it accessible to the DynamicLibraryManager. Example of usage: #include <cppunit/include/plugin/TestPlugIn.h> CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) { ... return &myPlugInInterface; } |
|
Value: CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void) \ { \ static TestPlugInInterfaceType plugIn; \ return &plugIn; \ } \ typedef char __CppUnitPlugInExportFunctionDummyTypeDef
|
|
Name of the function exported by a test plug-in. The signature of the exported function is: |
|
Value: CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( CPPUNIT_NS::TestPlugInDefaultImpl ); \ CPPUNIT_PLUGIN_IMPLEMENT_MAIN() This macro exports the test plug-in function using the subclass, and implements the 'main' function for the plug-in using CPPUNIT_PLUGIN_IMPLEMENT_MAIN(). When using this macro, CppUnit must be linked as a DLL (shared library). Otherwise, tests registered to the TestFactoryRegistry in the DLL will not be visible to the DllPlugInTester.
|
|
Type of the function exported by a plug-in.
|
hosts this site. |
Send comments to: CppUnit Developers |