Renamed before/after methods and interfaces to setup/teardown

pull/24/head
Samuel Nelson 2013-10-15 10:32:35 -06:00
parent a4c24896e3
commit 11dce72087
3 changed files with 44 additions and 44 deletions

View File

@ -9,26 +9,26 @@ type TestingSuite interface {
SetT(*testing.T) SetT(*testing.T)
} }
// BeforeAllSuite has a BeforeSuite method, intended to be run before // SetupAllSuite has a SetupSuite method, which will run before the
// the entire suite is tested. // tests in the suite are run.
type BeforeAllSuite interface { type SetupAllSuite interface {
BeforeSuite() SetupSuite()
} }
// BeforeTestSuite has a BeforeTest method, intended to be run before // SetupTestSuite has a SetupTest method, which will run before each
// each test. // test in the suite.
type BeforeTestSuite interface { type SetupTestSuite interface {
BeforeTest() SetupTest()
} }
// AfterAllSuite has an AfterSuite method, intended to be run after the // TearDownAllSuite has a TearDownSuite method, which will run after
// entire suite has been tested. // all the tests in the suite have been run.
type AfterAllSuite interface { type TearDownAllSuite interface {
AfterSuite() TearDownSuite()
} }
// AfterTestSuite has an AfterTest method, intended to be run after // TearDownTestSuite has a TearDownTest method, which will run after
// each test. // each test in the suite.
type AfterTestSuite interface { type TearDownTestSuite interface {
AfterTest() TearDownTest()
} }

View File

@ -27,25 +27,25 @@ func (suite *Suite) SetT(t *testing.T) {
func Run(t *testing.T, suite TestingSuite) { func Run(t *testing.T, suite TestingSuite) {
suite.SetT(t) suite.SetT(t)
if beforeAllSuite, ok := suite.(BeforeAllSuite); ok { if setupAllSuite, ok := suite.(SetupAllSuite); ok {
beforeAllSuite.BeforeSuite() setupAllSuite.SetupSuite()
}
if afterAllSuite, ok := suite.(AfterAllSuite); ok {
defer afterAllSuite.AfterSuite()
} }
methodFinder := reflect.TypeOf(suite) methodFinder := reflect.TypeOf(suite)
for index := 0; index < methodFinder.NumMethod(); index++ { for index := 0; index < methodFinder.NumMethod(); index++ {
method := methodFinder.Method(index) method := methodFinder.Method(index)
if ok, _ := regexp.MatchString("^Test", method.Name); ok { if ok, _ := regexp.MatchString("^Test", method.Name); ok {
if beforeTestSuite, ok := suite.(BeforeTestSuite); ok { if setupTestSuite, ok := suite.(SetupTestSuite); ok {
beforeTestSuite.BeforeTest() setupTestSuite.SetupTest()
} }
method.Func.Call([]reflect.Value{reflect.ValueOf(suite)}) method.Func.Call([]reflect.Value{reflect.ValueOf(suite)})
if afterTestSuite, ok := suite.(AfterTestSuite); ok { if tearDownTestSuite, ok := suite.(TearDownTestSuite); ok {
afterTestSuite.AfterTest() tearDownTestSuite.TearDownTest()
} }
} }
} }
if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok {
defer tearDownAllSuite.TearDownSuite()
}
} }

View File

@ -9,29 +9,29 @@ import (
// testing-suite-related methods are run. // testing-suite-related methods are run.
type SuiteTester struct { type SuiteTester struct {
Suite Suite
BeforeSuiteRunCount int SetupSuiteRunCount int
AfterSuiteRunCount int TearDownSuiteRunCount int
BeforeTestRunCount int SetupTestRunCount int
AfterTestRunCount int TearDownTestRunCount int
TestOneRunCount int TestOneRunCount int
TestTwoRunCount int TestTwoRunCount int
NonTestMethodRunCount int NonTestMethodRunCount int
} }
func (suite *SuiteTester) BeforeSuite() { func (suite *SuiteTester) SetupSuite() {
suite.BeforeSuiteRunCount++ suite.SetupSuiteRunCount++
} }
func (suite *SuiteTester) AfterSuite() { func (suite *SuiteTester) TearDownSuite() {
suite.AfterSuiteRunCount++ suite.TearDownSuiteRunCount++
} }
func (suite *SuiteTester) BeforeTest() { func (suite *SuiteTester) SetupTest() {
suite.BeforeTestRunCount++ suite.SetupTestRunCount++
} }
func (suite *SuiteTester) AfterTest() { func (suite *SuiteTester) TearDownTest() {
suite.AfterTestRunCount++ suite.TearDownTestRunCount++
} }
func (suite *SuiteTester) TestOne() { func (suite *SuiteTester) TestOne() {
@ -50,16 +50,16 @@ func TestSuiteLogic(t *testing.T) {
suiteTester := new(SuiteTester) suiteTester := new(SuiteTester)
Run(t, suiteTester) Run(t, suiteTester)
// The suite was only run once, so the BeforeSuite and AfterSuite // The suite was only run once, so the SetupSuite and TearDownSuite
// methods should have each been run only once. // methods should have each been run only once.
assert.Equal(t, suiteTester.BeforeSuiteRunCount, 1) assert.Equal(t, suiteTester.SetupSuiteRunCount, 1)
assert.Equal(t, suiteTester.AfterSuiteRunCount, 1) assert.Equal(t, suiteTester.TearDownSuiteRunCount, 1)
// There are two test methods (TestOne and TestTwo), so the // There are two test methods (TestOne and TestTwo), so the
// BeforeTest and AfterTest methods (which should be run once for // SetupTest and TearDownTest methods (which should be run once for
// each test) should have been run twice. // each test) should have been run twice.
assert.Equal(t, suiteTester.BeforeTestRunCount, 2) assert.Equal(t, suiteTester.SetupTestRunCount, 2)
assert.Equal(t, suiteTester.AfterTestRunCount, 2) assert.Equal(t, suiteTester.TearDownTestRunCount, 2)
// Each test should have been run once. // Each test should have been run once.
assert.Equal(t, suiteTester.TestOneRunCount, 1) assert.Equal(t, suiteTester.TestOneRunCount, 1)