Unit testing frameworks, which help simplify the process of unit testing,
have been developed for a wide variety of languages. It is generally possible to
perform unit testing without the support of specific framework by writing client
code that exercises the units under test and uses assertion, exception, or early
exit mechanisms to signal failure.
This approach is valuable in that there is a
non-negligible barrier to the adoption of unit testing. However, it is also
limited in that many advanced features of a proper framework are missing or must
be hand-coded.