TAP::Harness::JUnit(3pm) | User Contributed Perl Documentation | TAP::Harness::JUnit(3pm) |
NAME¶
TAP::Harness::JUnit - Generate JUnit compatible output from TAP results
SYNOPSIS¶
use TAP::Harness::JUnit; my $harness = TAP::Harness::JUnit->new({ xmlfile => 'output.xml', package => 'database', # ... }); $harness->runtests(@tests);
DESCRIPTION¶
The only difference between this module and TAP::Harness is that this module adds the optional arguments 'xmlfile', 'package', and 'namemangle' that cause the output to be formatted into XML in a format similar to the one that is produced by the JUnit testing framework.
METHODS¶
This module inherits all functions from TAP::Harness.
new¶
These options are added (compared to TAP::Harness):
- xmlfile
- Name of the file XML output will be saved to. If this argument is omitted,
the default of "junit_output.xml" is used and a warning is
issued.
Alternatively, the name of the output file can be specified in the $JUNIT_OUTPUT_FILE environment variable
- package
- The Hudson/Jenkins continuous-integration systems support separating test
results into "packages". By default any number of output xml
files will be merged into the default package "(root)".
Setting a package name will place all test results from the current run into that package. You can also set the environment variable $JUNIT_PACKAGE to do the same.
- notimes (DEPRECATED)
- If provided (and true), test case times will not be recorded.
- namemangle
- Specify how to mangle testcase names. This is sometimes required to
interact with buggy JUnit consumers that lack sufficient validation.
Alternatively, this value can be set in the environment variable $JUNIT_NAME_MANGLE.
Available values are:
- hudson
- Replace anything but alphanumeric characters with underscores. This is the default for historic reasons.
- perl (RECOMMENDED)
- Replace slashes in the directory hierarchy with dots so that the
filesystem layout resembles a Java class hierarchy.
This is the recommended setting and may become the default in future.
- none
- Do not perform any transformations.
ENVIRONMENT VARIABLES¶
The name of the output file can be specified in the $JUNIT_OUTPUT_FILE environment variable
The package name that Hudson/Jenkins use to categorise test results can be specified in $JUNIT_PACKAGE.
The name mangling mechanism used to rewrite test names can be specified in $JUNIT_NAME_MANGLE. (See namemangle documentation for available values.)
SEE ALSO¶
TAP::Formatter::JUnit at <https://metacpan.org/pod/TAP::Formatter::JUnit>
The JUnit XML schema was obtained from <http://jra1mw.cvs.cern.ch:8180/cgi-bin/jra1mw.cgi/org.glite.testing.unit/config/JUnitXSchema.xsd?view=markup>.
ACKNOWLEDGEMENTS¶
This module was partly inspired by Michael Peters's TAP::Harness::Archive. It was originally written by Lubomir Rintel (GoodData) "<lubo.rintel@gooddata.com>" and includes code from several contributors.
The following people (in no specific order) have reported problems or contributed code to TAP::Harness::JUnit:
BUGS¶
The comments that are above the "ok" or "not ok" are considered the output of the test. This, though being more logical, is against TAP specification.
XML::Simple is used to generate the output. This is suboptimal and involves some hacks.
During testing the resulting files are not tested against the schema. This would be a good thing to do.
CONTRIBUTING¶
Source code for TAP::Harness::JUnit is kept in a public Git repository. Visit <https://github.com/jlavallee/tap-harness-junit>.
Bug reports and feature enhancement requests are tracked at <https://rt.cpan.org/Public/Dist/Display.html?Name=TAP-Harness-JUnit>.
COPYRIGHT & LICENSE¶
Copyright 2008, 2009, 2010, 2011, 2012, 2013 TAP::Harness::JUnit contributors. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2015-04-13 | perl v5.40.0 |