### The ITest Base Class

The core of the Test Framework is the class ITest, an abstract base class that defines the protocol for an executable test. ITest is a framework that embodies the concepts of:

- A test success state (not set, pass, or fail)
- A target object on which tests are performed
- Input through a collection of IString objects
- Output via an object with ostream-like behavior
- Textual metainformation about the test
- Uniform exception handling by the Test Framework

To write a test, you generally write a subclass of ITest. This subclass overrides the test function and, optionally, the associated framework functions reset, setup, and cleanup. To run the test, you generally use the runTestImplementationMacro to create an application that defines the main function to create and run the test.