1<a id="top"></a> 2# Reporters 3 4Catch has a modular reporting system and comes bundled with a handful of useful reporters built in. 5You can also write your own reporters. 6 7## Using different reporters 8 9The reporter to use can easily be controlled from the command line. 10To specify a reporter use [`-r` or `--reporter`](command-line.md#choosing-a-reporter-to-use), followed by the name of the reporter, e.g.: 11 12``` 13-r xml 14``` 15 16If you don't specify a reporter then the console reporter is used by default. 17There are four reporters built in to the single include: 18 19* `console` writes as lines of text, formatted to a typical terminal width, with colours if a capable terminal is detected. 20* `compact` similar to `console` but optimised for minimal output - each entry on one line 21* `junit` writes xml that corresponds to Ant's [junitreport](http://help.catchsoftware.com/display/ET/JUnit+Format) target. Useful for build systems that understand Junit. 22Because of the way the junit format is structured the run must complete before anything is written. 23* `xml` writes an xml format tailored to Catch. Unlike `junit` this is a streaming format so results are delivered progressively. 24 25There are a few additional reporters, for specific build systems, in the Catch repository (in `include\reporters`) which you can `#include` in your project if you would like to make use of them. 26Do this in one source file - the same one you have `CATCH_CONFIG_MAIN` or `CATCH_CONFIG_RUNNER`. 27 28* `teamcity` writes the native, streaming, format that [TeamCity](https://www.jetbrains.com/teamcity/) understands. 29Use this when building as part of a TeamCity build to see results as they happen ([code example](../examples/207-Rpt-TeamCityReporter.cpp)). 30* `tap` writes in the TAP ([Test Anything Protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol)) format. 31* `automake` writes in a format that correspond to [automake .trs](https://www.gnu.org/software/automake/manual/html_node/Log-files-generation-and-test-results-recording.html) files 32* `sonarqube` writes the [SonarQube Generic Test Data](https://docs.sonarqube.org/latest/analysis/generic-test/) XML format. 33 34You see what reporters are available from the command line by running with `--list-reporters`. 35 36By default all these reports are written to stdout, but can be redirected to a file with [`-o` or `--out`](command-line.md#sending-output-to-a-file) 37 38## Writing your own reporter 39 40You can write your own custom reporter and register it with Catch. 41At time of writing the interface is subject to some changes so is not, yet, documented here. 42If you are determined you shouldn't have too much trouble working it out from the existing implementations - 43but do keep in mind upcoming changes (these will be minor, simplifying, changes such as not needing to forward calls to the base class). 44 45--- 46 47[Home](Readme.md#top) 48