TestRunSuite will be run by the 'go test' command, so within it, we can run our suite using the Run(*testing.T, TestingSuite) function.
(t *testing.T)
| 302 | // TestRunSuite will be run by the 'go test' command, so within it, we |
| 303 | // can run our suite using the Run(*testing.T, TestingSuite) function. |
| 304 | func TestRunSuite(t *testing.T) { |
| 305 | suiteTester := new(SuiteTester) |
| 306 | Run(t, suiteTester) |
| 307 | |
| 308 | // Normally, the test would end here. The following are simply |
| 309 | // some assertions to ensure that the Run function is working as |
| 310 | // intended - they are not part of the example. |
| 311 | |
| 312 | // The suite was only run once, so the SetupSuite and TearDownSuite |
| 313 | // methods should have each been run only once. |
| 314 | assert.Equal(t, 1, suiteTester.SetupSuiteRunCount) |
| 315 | assert.Equal(t, 1, suiteTester.TearDownSuiteRunCount) |
| 316 | |
| 317 | assert.Len(t, suiteTester.SuiteNameAfter, 4) |
| 318 | assert.Len(t, suiteTester.SuiteNameBefore, 4) |
| 319 | assert.Len(t, suiteTester.TestNameAfter, 4) |
| 320 | assert.Len(t, suiteTester.TestNameBefore, 4) |
| 321 | |
| 322 | assert.Contains(t, suiteTester.TestNameAfter, "TestOne") |
| 323 | assert.Contains(t, suiteTester.TestNameAfter, "TestTwo") |
| 324 | assert.Contains(t, suiteTester.TestNameAfter, "TestSkip") |
| 325 | assert.Contains(t, suiteTester.TestNameAfter, "TestSubtest") |
| 326 | |
| 327 | assert.Contains(t, suiteTester.TestNameBefore, "TestOne") |
| 328 | assert.Contains(t, suiteTester.TestNameBefore, "TestTwo") |
| 329 | assert.Contains(t, suiteTester.TestNameBefore, "TestSkip") |
| 330 | assert.Contains(t, suiteTester.TestNameBefore, "TestSubtest") |
| 331 | |
| 332 | assert.Contains(t, suiteTester.SetupSubTestNames, "TestRunSuite/TestSubtest/first") |
| 333 | assert.Contains(t, suiteTester.SetupSubTestNames, "TestRunSuite/TestSubtest/second") |
| 334 | |
| 335 | assert.Contains(t, suiteTester.TearDownSubTestNames, "TestRunSuite/TestSubtest/first") |
| 336 | assert.Contains(t, suiteTester.TearDownSubTestNames, "TestRunSuite/TestSubtest/second") |
| 337 | |
| 338 | for _, suiteName := range suiteTester.SuiteNameAfter { |
| 339 | assert.Equal(t, "SuiteTester", suiteName) |
| 340 | } |
| 341 | |
| 342 | for _, suiteName := range suiteTester.SuiteNameBefore { |
| 343 | assert.Equal(t, "SuiteTester", suiteName) |
| 344 | } |
| 345 | |
| 346 | for _, when := range suiteTester.TimeAfter { |
| 347 | assert.False(t, when.IsZero()) |
| 348 | } |
| 349 | |
| 350 | for _, when := range suiteTester.TimeBefore { |
| 351 | assert.False(t, when.IsZero()) |
| 352 | } |
| 353 | |
| 354 | // There are four test methods (TestOne, TestTwo, TestSkip, and TestSubtest), so |
| 355 | // the SetupTest and TearDownTest methods (which should be run once for |
| 356 | // each test) should have been run four times. |
| 357 | assert.Equal(t, 4, suiteTester.SetupTestRunCount) |
| 358 | assert.Equal(t, 4, suiteTester.TearDownTestRunCount) |
| 359 | |
| 360 | // Each test should have been run once. |
| 361 | assert.Equal(t, 1, suiteTester.TestOneRunCount) |