Executing the tests automatically creates a report detailing assertion failures and errors. The goal of each unit test is to test the smallest unit of work that makes sense. Obviously what makes sense is a judgment exercised by each individual developer. The goal of all unit tests is to exercise every line of code within an application. While it is possible to construct a massively large test that exercises every piece of the application, it is also impractical because it would be time-consuming to create the test before the entire application is finished.
Unit tests improve the quality of an application.
Once a suite of tests is created, the application can be validated to provide the developer some level of assurance that everything works. Obviously full integration testing is still necessary, but the beauty of the unit tests is that they can be done automatically without human intervention. Developers working on an application are not aware of every subtle detail of an implementation. Whenever application code changes, either from new features or bug fixes, there is a risk that previously working code is now broken. Unit tests help ensure that an unexpected error, as result of the changes, has not been introduced into the application.