suite

package
v0.0.0-...-86643de Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2019 License: BSD-2-Clause, MIT Imports: 3 Imported by: 0

Documentation

Overview

The suite package contains logic for creating testing suite structs and running the methods on those structs as tests. The most useful piece of this package is that you can create setup/teardown methods on your testing suites, which will run before/after the whole suite or individual tests (depending on which interface(s) you implement).

A testing suite is usually built by first extending the built-in suite functionality from suite.Suite in testify. Alternatively, you could reproduce that logic on your own if you wanted (you just need to implement the TestingSuite interface from suite/interfaces.go).

After that, you can implement any of the interfaces in suite/interfaces.go to add setup/teardown functionality to your suite, and add any methods that start with "Test" to add tests. Methods that do not match any suite interfaces and do not begin with "Test" will not be run by testify, and can safely be used as helper methods.

Once you've built your testing suite, you need to run the suite (using suite.Run from testify) inside any function that matches the identity that "go test" is already looking for (i.e. func(*testing.T)).

A crude example:

// Basic imports
import (
    "testing"
    "github.com/MG-RAST/golib/stretchr/testify/assert"
    "github.com/MG-RAST/golib/stretchr/testify/suite"
)

// Define the suite, and absorb the built-in basic suite
// functionality from testify - including a T() method which
// returns the current testing context
type ExampleTestSuite struct {
    suite.Suite
    VariableThatShouldStartAtFive int
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *ExampleTestSuite) SetupTest() {
    suite.VariableThatShouldStartAtFive = 5
}

// All methods that begin with "Test" are run as tests within a
// suite.
func (suite *ExampleTestSuite) TestExample() {
    assert.Equal(suite.T(), suite.VariableThatShouldStartAtFive, 5)
}

// In order for 'go test' to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestExampleTestSuite(t *testing.T) {
    suite.Run(t, new(ExampleTestSuite))
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(t *testing.T, suite TestingSuite)

Run takes a testing suite and runs all of the tests attached to it.

Types

type SetupAllSuite

type SetupAllSuite interface {
	SetupSuite()
}

SetupAllSuite has a SetupSuite method, which will run before the tests in the suite are run.

type SetupTestSuite

type SetupTestSuite interface {
	SetupTest()
}

SetupTestSuite has a SetupTest method, which will run before each test in the suite.

type Suite

type Suite struct {
	// contains filtered or unexported fields
}

Suite is a basic testing suite with methods for storing and retrieving the current *testing.T context.

func (*Suite) SetT

func (suite *Suite) SetT(t *testing.T)

SetT sets the current *testing.T context.

func (*Suite) T

func (suite *Suite) T() *testing.T

T retrieves the current *testing.T context.

type TearDownAllSuite

type TearDownAllSuite interface {
	TearDownSuite()
}

TearDownAllSuite has a TearDownSuite method, which will run after all the tests in the suite have been run.

type TearDownTestSuite

type TearDownTestSuite interface {
	TearDownTest()
}

TearDownTestSuite has a TearDownTest method, which will run after each test in the suite.

type TestingSuite

type TestingSuite interface {
	T() *testing.T
	SetT(*testing.T)
}

TestingSuite can store and return the current *testing.T context generated by 'go test'.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL