unit testing challenges