Test Anything Protocol
This article needs additional citations for verification. (October 2017) (Learn how and when to remove this template message)
The Test Anything Protocol (TAP) is a protocol to allow communication between unit tests and a test harness. It allows individual tests (TAP producers) to communicate test results to the testing harness in a language-agnostic way. Originally developed for unit testing of the Perl interpreter in 1987, producers and parsers are now available for many development platforms.
TAP was created for the first version of the Perl programming language (released in 1987), as part of the Perl's core test harness (
Test::Harness module was written by Tim Bunce and Andreas König to allow Perl module authors to take advantage of TAP. It became the de facto standard for Perl testing.
Development of TAP, including standardization of the protocol, writing of test producers and consumers, and evangelizing the language is coordinated at the TestAnything website.
A formal specification for this protocol exists in the
TAP::Parser::Grammar modules. The behavior of the
Test::Harness module is the de facto TAP standard implementation, along with a writeup of the specification on http://testanything.org.
Here's an example of TAP's general format:
1..48 ok 1 Description # Directive # Diagnostic .... ok 47 Description ok 48 Description
For example, a test file's output might look like:
1..4 ok 1 - Input file opened not ok 2 - First line of the input valid. More output from test 2. There can be arbitrary number of lines for any output so long as there is at least some kind of whitespace at beginning of line. ok 3 - Read the rest of the file #TAP meta information not ok 4 - Summarized correctly # TODO: not written yet
- "A Perl toolbox for regression tests : Testing Tools". Nnc3.com. Retrieved 27 October 2017. CS1 maint: discouraged parameter (link)
- Schilli, Mike. "Print as Print Can » Linux Magazine". Linux Magazine. Retrieved 27 October 2017. CS1 maint: discouraged parameter (link)
- Szabo, Gabor. "TAP - Test Anything Protocol". Perl Maven. Retrieved 2019-08-07.
- "The Test Anything Protocol website". Testanything.org. Retrieved September 4, 2008. CS1 maint: discouraged parameter (link)
- McClive, Simon (2017-09-21). "Unit testing Postgres with pgTAP". Medium (website). Retrieved 2019-08-07.
- Gravelle, Rob (2012-08-13). "Testing Your MySQL Stored Procedures with MyTAP". Database Journal. Retrieved 2019-08-07.
- "Node Tap". Node Tap. Retrieved 2019-08-07.
- "TAP(3) manual page". FreeBSD. Retrieved 2019-08-07.