Unit Testing Best Practices: Following Dos and Avoiding Don'ts