8000 GitHub - grosser/ginkgo: BDD Testing Framework for Go · GitHub
[go: up one dir, main page]

Skip to content
  • grosserPublic
    forked from onsi/ginkgo

    About

    BDD Testing Framework for Go

    Resources

    Contributing

    Stars

    0 stars

    Watchers

    0 watching

    Forks

     
     

    Repository files navigation

    Ginkgo: A Go BDD Testing Framework

    Build Status

    Jump to the docs to learn more. To start rolling your Ginkgo tests now keep reading!

    If you have a question, comment, bug report, feature request, etc. please open a GitHub issue.

    Feature List

    • Ginkgo uses Go's testing package and can live alongside your existing testing tests. It's easy to bootstrap and start writing your first tests

    • Structure your BDD-style tests expressively:

    • 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=N runs your tests in N parallel processes and print out coherent output in realtime
      • ginkgo -cover runs your tests using Go's code coverage tool
      • ginkgo convert converts an XUnit-style testing package to a Ginkgo-style package
      • ginkgo -focus="REGEXP" and ginkgo -skip="REGEXP" allow you to specify a subset of tests to run via regular expression
      • ginkgo -r runs all tests suites under the current directory
      • ginkgo -v prints out identifying information for each tests just before it runs

      And much more: run ginkgo help for details!

      The ginkgo CLI is convenient, but purely optional -- Ginkgo works just fine with go test

    • ginkgo watch watches 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:

    Gomega: Ginkgo's Preferred Matcher Library

    Ginkgo is best paired with Gomega. Learn more about Gomega here

    Agouti: A Go Acceptance Testing Framework

    Agouti allows you run WebDriver integration tests. Learn more about Agouti here

    Set Me Up!

    You'll need the Go command-line tools. Ginkgo is tested with Go 1.6+, but preferably you should get the latest. Follow the installation instructions if you don't have it installed.

    go get -u github.com/onsi/ginkgo/ginkgo  # installs the ginkgo CLI
    go get -u github.com/onsi/gomega/...     # fetches the matcher library
    
    cd path/to/package/you/want/to/test
    
    ginkgo bootstrap # set up a new ginkgo suite
    ginkgo generate  # will create a sample test file.  edit this file and add your tests then...
    
    go test # to run your tests
    
    ginkgo  # also runs your tests
    

    I'm new to Go: What are my testing options?

    Of course, I heartily recommend Ginkgo and Gomega. Both packages are seeing heavy, daily, production use on a number of projects and boast a mature and comprehensive feature-set.

    With that said, it's great to know what your options are :)

    What Go gives you out of the box

    Testing is a first class citizen in Go, however Go's built-in testing primitives are somewhat limited: The testing package provides basic XUnit style tests and no assertion library.

    Matcher libraries for Go's XUnit style tests

    A number of matcher libraries have been written to augment Go's built-in XUnit style tests. Here are two that have gained traction:

    You can also use Ginkgo's matcher library Gomega in XUnit style tests

    BDD style testing frameworks

    There are a handful of BDD-style testing frameworks written for Go. Here are a few:

    Finally, @shageman has put together a comprehensive comparison of Go testing libraries.

    Go explore!

    License

    Ginkgo is MIT-Licensed

    Contributing

    Since Ginkgo tests also internal packages, when you fork, you'll have to replace imports with your repository.
    Use before_pr.sh for that
    After you finished your changes and before you push your pull request, use after_pr.sh to revert those changes

    About

    BDD Testing Framework for Go

    Resources

    Contributing

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    Languages

    0