Hi Paul,
OK... to distinguish --workers:0 from --workers:1, we have to get into
internals. Everyone else, stop reading. :-)
Tests are run like shifts in a factory. We have three shifts. First
shift runs all parallelizable tests in an MTA using as many queues as
you specify **plus** any parallelizable STA tests in a separate queue.
Second shift runs non-parallelizable tests in an MTA. Third shift runs
non-parallelizable tests in the STA. First shift has n queues, second
and third have one each. By definition, shifts don't overlap. If you
could prove that was happening, it would be a bug. :-)
What do you mean when you say same issues when running from
nunit3-console as from the IDE? What I meant was running
nunit3-console either from the IDE or externally. If we try to solve a
problem involving multiple runners, like our adapter or the R# runner,
we are going to get confused.
To answer the specific question, if a class running in the STA is
marked as parallelizable, that means it can run in paralllel with
other tests in the STA. That will happen even if you specify
--workers:1, since an extra queue is created for STA tests, but not if
you use --workers:0 which disables the entire queuing mechanism and
simply runs tests directly like NUnit V2.
Charlie