evolve.
Discovering all
the problems that can occur
takes time. In order to have a complete
unit test suite when you need it you must begin creating the tests
today when you don't.

Unit
tests enable
collective ownership.
When you create unit tests you guard your
functionality from being accidentally harmed. Requiring all code to
pass all unit tests before it can be released ensures all functionality
always works. Individual code ownership is not required if all classes
are guarded
by unit tests.

Unit
tests enable
refactoring
as well. After each small change the unit tests can verify that a
change in structure did not introduce a change in functionality.

Building
a single universal unit test suite for validation and regression
testing enables
frequent
integration. It is possible to integrate any recent changes
quickly then run your own latest version of the test suite. When a test
fails your latest versions are incompatible with the team's latest
versions. Fixing small problems every few hours takes less time than
fixing huge problems just before the deadline. With automated unit
tests it is possible to merge a set of changes with the latest released
version and release in a short time.

Often
adding new functionality will require changing the unit tests to
reflect the functionality.