Learning TDD while implementing design patterns in java