I am doing an AI project that currently had the following namespace/package structure:

My ideia is to have some Unit/Integration tests for each one of the modules (probably not for all of them. Startup probably won’t be tested).
Each one of these "main" packages is in a different physical file. I’d like to know what you think would be better:
- Having for each physical file X.dll a X.Tests.dll
- Having a Tests physical file that has the whole lot of tests (doesn’t seem like a good idea).
- Incorporating Breakthrough’s tests in Breakthrough.dll, AI.GeneticAlgorithms in AI.GeneticAlgorithms.dll, etc. I kind of like this solution, as then I won’t have my Visual Studio solution explorer cluttered with the the whole set of Test projects.
Thanks!
Personally, I would have one project/assembly for startup, one for tests, and one for everything else.
Build time increases significantly with multiple projects, so the less projects the better. Unless of course you need to be able to deploy the different packages separately.
Tests are generally not included in the project they are testing because it requires the assembly to take a dependency on any testing frameworks you are using.