Unit testing helps ensure that the code both fulfills the requirement, and future changes (even in other packages) do not cause a regression. The unit test is written as a separate package that references the package it is testing. If we follow Test Driven Development (TDD), we will write the tests early in the process (some would argue first). TDD changes the way we think when writing code. Should we need to make a change to a project, we are forced to update the test case code (as the tests will otherwise fail)--this promotes a test-centric approach to development, and naturally reduces the test cycles. Regression in other packages is caught by the build process; the build server will download all checked-in code, perform a build, and then look for tests to execute. Any tests that fail are reported and the build--depending on the build's set up--will be marked as failed.
Each partner or customer...