Registered 2006-10-10 by Subunit Developers

Subunit is a streaming protocol for test results. The protocol is a binary encoding that is easily generated and parsed. By design all the components of the protocol conceptually fit into the xUnit TestCase->TestResult interaction.

Subunit comes with command line filters to process a subunit stream and
language bindings for python, C, C++ and shell. Bindings are easy to write
for other languages.

A number of useful things can be done easily with subunit:
 * Test aggregation: Tests run separately can be combined and then
   reported/displayed together. For instance, tests from different languages
   can be shown as a seamless whole.
 * Test archiving: A test run may be recorded and replayed later.
 * Test isolation: Tests that may crash or otherwise interact badly with each
   other can be run seperately and then aggregated, rather than interfering
   with each other.
 * Grid testing: subunit can act as the necessary serialisation and
   deserialiation to get test runs on distributed machines to be reported in
   real time.

Subunit supplies the following filters:
 * tap2subunit - convert perl's TestAnythingProtocol to subunit.
 * subunit2pyunit - convert a subunit stream to pyunit test results.
 * subunit2gtk - display a subunit stream in a gtk window.
 * subunit2junitxml - convert a subunit stream to a JUnit XML representation.
 * subunit-diff - diff two subunit streams.
 * subunit-filter - filter out tests from a subunit stream.
 * subunit-ls - list the tests present in a subunit stream.
 * subunit-stats - generate a summary of a subunit stream.
 * subunit-tags - add or remove tags from a stream.

A mailing list for discussion, usage and development is at - all are welcome to join.

Subunit is shipped by recent Debian and Ubuntu versions. Newer versions for Ubuntu may be available from either of the two Personal Package Archives : and

Project information

Apache Licence, Simplified BSD Licence

RDF metadata

View full history Series and milestones

trunk series is the current focus of development.

All code Code

Version control system:

All questions Latest questions

All packages Packages in Distributions


Latest version is 1.2
released on 2015-10-23

All downloads


  • 0.0.6 released on 2010-07-02
    This release of subunit fixes a number of unicode related bugs. This depends ...
  • Talk given, 0.0.5 out on 2010-01-24
    I presented on Subunit at LCA 2010 - the talk was fairly well received. We ha...
  • 0.0.5 released on 2010-01-19
    Two new features: * New filter `subunit-notify` that will show a notificati...
  • subunit paper accepted for LCA2010 on 2009-09-06
    Hope to see anyone interested in subunit in Wellington!
  • Subunit presentation at SLUG on 2009-07-31
    Slides [ ] are up fo...