I have typically had a 1:1 mapping between my product assemblies and my unit test assemblies. I generally try to keep the overall number of assemblies low, and a typical solution may look something like...
- Client (Contains Views, Controllers, etc)
- Client.Tests
- Common (Contains Data/Service Contracts, Common Utilities etc)
- Common.Tests
- Server (Contains Domain, Services, etc)
- Server.Tests
- Server.WebHost
Lately at work, people have been mentioning having just a single Unit Test project vs. breaking them down by the assembly that they are testing. I know back in the day, this made life easier if you were running NCover etc as part of your build (no longer matters of course).
What is the general rational behind single vs. multiple UnitTest projects? Other than reducing the number of projects in a solution, is there a concrete reason to go one way or the other? I get the impression this may be one of those "preference" things, but Googling hasn't turned up much.