TDD, design patterns and Java best practices using Google libraries