I have open source C# .NET project at GitHub with Appveyor CI + code coverage.
There are configurations like Release and Debug. There's also platforms like x86, x64 and Any CPU.
This results to following:
Configuration | Platform | Tests --------------+----------+-------- Release | x86 | 100/100 Release | x64 | 100/100 Release | Any CPU | 100/100 Debug | x86 | 100/100 Debug | x64 | 100/100 Debug | Any CPU | 100/100
Should unit tests run always on all of the combinations (six) of these two dimensions when application is in development stage? ie. mainly only developers are in the process and lots of changes are taking place.
My intuition says that only Debug configuration and one platform should be tested.
My view is that Debug configuration gives more information and as C# being quite high level language and running in VM (CLR) there's no need to test x64 and x86 separately.
There's also third dimension with .NET framework version. And fourth with OS.
Is there best practises view in the field of what is or isn't necessary when application is being developed?
When shipping all tests are of course ran. Same with possible nightly/weekly/etc builds.