This post is a summary of a lightningtalk I held for some of my colleagues at Objectware back in August 2008.
What is Arrange, Act, Assert (AAA)?
AAA is a way to organize your tests. The contents of the tests are divided in to three parts:
- Arrange: Do the necessary setup required for running the test. Usually multiple lines of code.
- Act: Execute the code which should be tested. Should be one line of code.
- Assert: Verify that the code behaved as expected. Should contain only one assertion.
Example of a test without AAA
The same test written in AAA style:
The example above is simple, but the value of using AAA style becomes more apparent for complex tests.
Why using AAA syntax
- The tests become more robust, easier to read and to maintain
- Being able to use AAA syntax is essential when writing Behaviour Driven Development style specifications/tests
AAA and mocking
In the following example, which parts of the code are arranging, acting and asserting?
The record/playback style should not be used, since it results in tests which are very hard to read and understand.
The same test as above written in AAA style:
Mocking frameworks supporting AAA syntax
The following mocking frameworks supports AAA:
- Rhino Mocks 3.5
- Typemock Isolator 5.0