Annotations

In addition to the life-cycle methods, you can make any method a life-cycle method by giving it the desired annotation in its function definition. This is especially useful for parent classes that want to hook in to the TestBox life-cycle.

  • @beforeAll - Executes once before all specs for the entire test bundle CFC

  • @afterAll - Executes once after all specs complete in the test bundle CFC

  • @beforeEach - Executes before every single spec in a single describe block and receives the currently executing spec.

  • @afterEach - Executes after every single spec in a single describe block and receives the currently executing spec.

  • @aroundEach - Executes around the executing spec so you can provide code surrounding the spec.

Below are several examples using script notation.

DBTestCase.cfc (parent class)

component extends="coldbox.system.testing.BaseTestCase"{

    /**
     * @aroundEach
     */
    function wrapInDBTransaction( spec, suite ){
        transaction action="begin" {
            try {
                arguments.spec.body();
            } catch (any e) {
                rethrow;
            } finally {
                transaction action="rollback"
            }
        }
     }
}

PostsTest.cfc

This also helps parent classes enforce their setup methods are called by annotating the methods with @beforeAll. No more forgetting to call super.beforeAll()!

Info: You can have as many annotated methods as you would like. TestBox discovers them up the inheritance chain and calls them in reverse order.

Last updated

Was this helpful?