Testing: Arrange, Act, Assert

enable the implementation of modules, even if some basic modules are still missing (mocking)

Basically tests consist of 3 steps: Arrange, Act and Assert. That means establishing the test environment (Arrange), executing the logic (Act) and verifying the expectation (Assert).
Consider a bank account with the possibility to deposit money as a simple example. The implementation in advance:

The test is quite simple, but is separated into 3 steps in a explicit and extensive way at this point.

Arrange

To make the test executable, the appropriate environment (necessary object etc.) has to be established. This step is pretty important for the tests quality. Poor tests create too many needless objects or even create objects, which are completely counterproductive. Accessing slow or external systems (database, file system, web), even if they add no value to the tests should be avoided too.
The test for the method « requires the object under test (subject) at least:

Assert

It is important to express the expectation in a clear and concise way, when verifying the result. This is how a good documentation by tests is done. If the expectation is hard to understand, then it is also hard to understand, what the implementation actually has to do: