You are currently looking at an older section of the wincent.dev website.
Please check the new version of the site at https://wincent.dev/ for updated content.

wincent WOTest: integrated unit testing

WOTest

WOTest is an Objective-C unit testing framework that integrates with Apple's Xcode 2.1 or later. It was developed "in house" and is used in the development of all Wincent products.

There are already a number of unit testing frameworks available and several support Objective-C. None of these was a perfect match for my needs so WOTest was developed to meet the following specific design requirements:

  • Unit testing should be an automatic part of the build process.
  • Unit testing should be fully integrated with Xcode.
  • Adding unit testing to a new product should be extremely simple.
  • The code which is unit tested should be the exact same code (bit for bit) that gets shipped to the customer.
  • The customer should be able to run the unit tests on his or her local system if desired.
  • The unit test framework should not impose a memory or performance penalty on those customers who do not wish to run the tests.

These requirements lead to a simple design; WOTest is a single framework bundle that contains all the components necessary to perform unit testing on frameworks, bundles or applications. It is not necessary to link to the WOTest framework in order to use it, which means that customers who do not wish to run the unit tests do not see an increased memory footprint nor any reduction in performance. Likewise it is not necessary to install the framework before using it (although you may wish to embed it inside your own application or framework bundle). The WOTest framework bundle contains the WOTestRunner tool for easy testing of stand-alone frameworks and bundles, and macros for triggering the unit testing process from within your own applications.

Project status

WOTest is in daily use in the development of Wincent products but to date there has been no official public release and no support is available. The following tasks are still pending:

  • Complete documentation
  • Mock object rewrite using alternative (non-HOM) syntax
  • Complete test suite

History

Revision 102 (8 September 2006)
  • First public availability