Skip to content
Matthew Holt edited this page Oct 23, 2013 · 7 revisions

Writing self-documenting tests is remarkably easy with GoConvey.

Examples

First, take a look through the examples folder to get the basic idea. We'd recommend reviewing isolated_execution_test.go for a more thorough understanding of how you can compose test cases.

Functions

See GoDoc for exported functions and assertions. You'd be most interested in the convey package.

Quick tutorial

In your test file, import needed packages:

import(
	"testing"
	. "github.com/smartystreets/goconvey/convey"
)

(Notice the dot-notation for the convey package, for convenience.)

Since GoConvey uses go test, set up a Test function:

func TestSomething(t *testing.T) {
	
}

To set up test cases, we use Convey() to define scope/context/behavior/ideas, and So() to make assertions. For example:

Convey("1 should equal 1", func() {
	So(1, ShouldEqual, 1)
})

There's a working GoConvey test. Here's some more:

Convey("Comparing two variables", func() {
	myVar := "Hello, world!"

	Convey(`"Asdf" should NOT equal "qwerty"`, func() {
		So("Asdf", ShouldNotEqual, "qwerty")
	})

	Convey("myVar should not be nil", func() {
		So(myVar, ShouldNotBeNil)
	})
})

If you haven't yet implemented a test or scope, just set its function to nil to skip it:

Convey("This isn't yet implemented", nil)

Next, you should learn about the standard assertions. You may also skip ahead to executing tests or to Skip to make testing more convenient.