I would like my Core assembly to not expose a certain class and I would still like to be able to test it. How can I do that ?
You can use reflection (as the MS Test items do), or you can declare the unit test assembly a friend of the core assembly.
The other option is to put the unit tests in the same assembly.