My favorite is quite a mix of projects (I've been automating quite some tests in my career).
Skipping Unit- and Integration testing...
For the front-end UI testing I use Watin. To make the Watin tests a little more data-driven (chunk multiple actions together into a procedure for common tasks, that can be called with different data) there is a Controller Framework that can be wrapped around it.
Then for Acceptance Testing (UA as you mention) I very much like to wrap Fitnesse around the above mentioned. Fitnesse will allow you to eventually delegate some of the functional stuff (use cases) to non-developers. These tests are like tables with a column for all possible input into a test, and a final column with the expected result value. For example a column for each field in a form plus a validation value. You set it up so that a Fitnesse test calls one of the Watin-controller tests with parameters for each field, and return a checksum or value from the watin-framework which can be validated by Fitnesse (which may be a simple boolean for valid/invalid, or be a calculated value, depending on what you're testing).
The combination of these 3 projects works very well (but I'll advise you to familiarize yourself with Fitnesse before writing the other stuff, because the implementation is a little different that you'd expect: Fitnesse calls methods for each input parameter for example so yo'll have to keep that in mind when writing the Watin-framework-wrapper layer).
Add TeamCity to the collection and you'll have speedy test-results after check-ins, while the code is still fresh in your mind. (this is the only commercial package in this list, but it's free for up to 20 projects).
It's quite a mix of Java (Fitnesse & TeamCity) and .Net (Watin), and it takes some time to figure everything out, but it saves tons of development time once you get the hang. (I'm a .Net developer by the way, but it never stopped me from looking over the fence and putting anything else to work when it saves time).