
Ginkgo is a BDD-style Go testing framework built to help you efficiently write expressive and comprehensive tests. It is best paired with the Gomega matcher library but is designed to be matcher-agnostic.
Feature List
- Ginkgo uses Go’s
testingpackage and can live alongside your existingtestingtests. It’s easy to bootstrap and start writing your first tests - Structure your BDD-style tests expressively:
- Nestable
Describe,ContextandWhencontainer blocks BeforeEachandAfterEachblocks for setup and teardownItandSpecifyblocks that hold your assertionsJustBeforeEachblocks that separate creation from configuration (also known as the subject action pattern).BeforeSuiteandAfterSuiteblocks to prep for and cleanup after a suite.
- Nestable
- A comprehensive test runner that lets you:
- Mark specs as pending
- Focus individual specs, and groups of specs, either programmatically or on the command line
- Run your tests in random order, and then reuse random seeds to replicate the same order.
- Break up your test suite into parallel processes for straightforward test parallelization
ginkgo: a command line interface with plenty of handy command line arguments for running your tests and generating test files. Here are a few choice examples:ginkgo -nodes=Nruns your tests inNparallel processes and print out coherent output in realtimeginkgo -coverruns your tests using Go’s code coverage toolginkgo convertconverts an XUnit-styletestingpackage to a Ginkgo-style packageginkgo -focus="REGEXP"andginkgo -skip="REGEXP"allow you to specify a subset of tests to run via regular expressionginkgo -rruns all tests suites under the current directoryginkgo -vprints out identifying information for each tests just before it runs
ginkgo helpfor details!TheginkgoCLI is convenient, but purely optional — Ginkgo works just fine withgo testginkgo watchwatches packages and their dependencies for changes, then reruns tests. Run tests immediately as you develop!- Built-in support for testing asynchronicity
- Built-in support for benchmarking your code. Control the number of benchmark samples as you gather runtimes and other, arbitrary, bits of numerical information about your code.
- Completions for Sublime Text: just use Package Control to install
Ginkgo Completions. - Completions for VSCode: just use VSCode’s extension installer to install
vscode-ginkgo. - Straightforward support for third-party testing libraries such as Gomock and Testify. Check out the docs for details.
- A modular architecture that lets you easily:
- Write custom reporters (for example, Ginkgo comes with a JUnit XML reporter and a TeamCity reporter).
- Adapt an existing matcher library (or write your own!) to work with Ginkgo