1
0
mirror of https://github.com/stretchr/testify.git synced 2025-04-27 13:13:19 +00:00
testify/suite/suite_test.go

72 lines
1.7 KiB
Go

package suite
import (
"testing"
"github.com/stretchr/testify/assert"
)
// This suite is intended to store values to make sure that only
// testing-suite-related methods are run.
type SuiteTester struct {
Suite
SetupSuiteRunCount int
TearDownSuiteRunCount int
SetupTestRunCount int
TearDownTestRunCount int
TestOneRunCount int
TestTwoRunCount int
NonTestMethodRunCount int
}
func (suite *SuiteTester) SetupSuite() {
suite.SetupSuiteRunCount++
}
func (suite *SuiteTester) TearDownSuite() {
suite.TearDownSuiteRunCount++
}
func (suite *SuiteTester) SetupTest() {
suite.SetupTestRunCount++
}
func (suite *SuiteTester) TearDownTest() {
suite.TearDownTestRunCount++
}
func (suite *SuiteTester) TestOne() {
suite.TestOneRunCount++
}
func (suite *SuiteTester) TestTwo() {
suite.TestTwoRunCount++
}
func (suite *SuiteTester) NonTestMethod() {
suite.NonTestMethodRunCount++
}
func TestSuiteLogic(t *testing.T) {
suiteTester := new(SuiteTester)
Run(t, suiteTester)
// The suite was only run once, so the SetupSuite and TearDownSuite
// methods should have each been run only once.
assert.Equal(t, suiteTester.SetupSuiteRunCount, 1)
assert.Equal(t, suiteTester.TearDownSuiteRunCount, 1)
// There are two test methods (TestOne and TestTwo), so the
// SetupTest and TearDownTest methods (which should be run once for
// each test) should have been run twice.
assert.Equal(t, suiteTester.SetupTestRunCount, 2)
assert.Equal(t, suiteTester.TearDownTestRunCount, 2)
// Each test should have been run once.
assert.Equal(t, suiteTester.TestOneRunCount, 1)
assert.Equal(t, suiteTester.TestTwoRunCount, 1)
// Methods that don't match the test method identifier shouldn't
// have been run at all.
assert.Equal(t, suiteTester.NonTestMethodRunCount, 0)
}