jstemmer/go-junit-report
GitHub: jstemmer/go-junit-report
Stars: 824 | Forks: 235
# go-junit-report
go-junit-report is a tool that converts [`go test`] output to a JUnit compatible
XML report, suitable for use with applications such as [Jenkins].
[](https://github.com/jstemmer/go-junit-report/actions)
[](https://pkg.go.dev/github.com/jstemmer/go-junit-report/v2)
[](https://goreportcard.com/report/github.com/jstemmer/go-junit-report/v2)
## Install from package (recommended)
Pre-built packages for Windows, macOS and Linux are found on the [Releases]
page.
## Install from source
Download and install the latest stable version from source by running:
go install github.com/jstemmer/go-junit-report/v2@latest
## Usage
Go build and runtime errors are also supported, but this requires that `stderr`
is redirected to go-junit-report as well.
Typical use looks like this:
go test -v 2>&1 ./... | go-junit-report -set-exit-code > report.xml
### More examples
JSON produced by `go test -json` is supported by the `gojson` parser. Note that
`stderr` still needs to be redirected to go-junit-report in order for build
errors to be detected. For example:
go test -json 2>&1 | go-junit-report -parser gojson > report.xml
Go benchmark output is also supported. The following example runs benchmarks for
the package in the current directory and uses the `-out` flag to write the
output to a file called `report.xml`.
go test -v -bench . -count 5 2>&1 | go-junit-report -out report.xml
The `-iocopy` flag copies `stdin` directly to `stdout`, which is helpful if you
want to see what was sent to go-junit-report. The following example reads test
input from a file called `tests.txt`, copies the input to `stdout` and writes
the output to a file called `report.xml`.
go-junit-report -in tests.txt -iocopy -out report.xml
### Flags
Run `go-junit-report -help` for a list of all supported flags.
| Flag | Description |
| -------------------- | ----------- |
| `-in file` | read go test log from `file` |
| `-iocopy` | copy input to stdout; can only be used in conjunction with -out |
| `-no-xml-header` | do not print xml header |
| `-out file` | write XML report to `file` |
| `-package-name name` | specify a default package name to use if output does not contain a package name |
| `-parser parser` | specify the parser to use, available parsers are: `gotest` (default), `gojson` |
| `-p key=value` | add property to generated report; properties should be specified as `key=value` |
| `-set-exit-code` | set exit code to 1 if tests failed |
| `-subtest-mode` | set subtest `mode`, modes are: `ignore-parent-results`, `exclude-parents` |
| `-version` | print version and exit |
## Go packages
The test output parser and JUnit XML report generator are also available as Go
packages. This can be helpful if you want to use the `go test` output parser or
create your own custom JUnit reports for example. See the package documentation
on pkg.go.dev for more information:
- [github.com/jstemmer/go-junit-report/v2/parser/gotest]
- [github.com/jstemmer/go-junit-report/v2/junit]
## Changelog
### v2.1.0
- Fix #147: Make timestamps in generated report more accurate.
- Fix #140: Escape illegal XML characters in junit output.
- Fix #145: Handle build errors in test packages with the `_test` suffix.
- Fix #145: Don't ignore build errors that did not belong to a package.
- Fix #134: Json test output was not parsed correctly when using the `-race` flag in `go test`.
- Add support for `=== NAME` lines introduced in Go1.20
- junit: Add File attribute to `testsuite`.
- junit: Allow multiple properties with the same name.
- junit: Add the `Testsuites.WriteXML` convenience method.
### v2.0.0
标签:EVTX分析