Hi, thanks for posting.
Disabling parallel execution should prevent tests being run at the same time by NCrunch on a single system. This means you can still end up with parallel execution if you're using a grid (for example, you might have one test running on your local machine, while another test runs on the remote grid node).
NCrunch doesn't integrate with Xunit's collection attributes. If you have xunit features set up to run tests in parallel, this does have the potential to undercut NCrunch's own parallelisation controls and can result in instability, including tests being run on background threads inside the test process.
It is not required to set your max processing threads to 1 to suppress parallel execution. Disabling parallel execution via setting should do the trick.
Something to be aware of is that it's still possible to have multiple processes running at one time, though when this happens NCrunch will only call them one at a time to execute tests. This is because NCrunch pools test processes for optimisation purposes.
If you have multithreaded behaviour in your tests (or xunit is somehow forcing its own parallelisation), this could cause parallel execution across these processes. For example, if you have a test that kicks off a background thread that continues runs after test execution is complete, this can then overlap execution of the next test. NCrunch cannot prevent such behaviour and it should be avoided in your code.
To introduce finer control of parallelisation, I recommend looking into
ExcusivelyUsesAttribute.
Edit: I strongly suspect your parallel behaviour is being caused by xunit. I recommend removing/disabling your xunit collection attributes to see if this rectifies the behaviour.