Даже если Visual Studio 2010 не запускает тесты в нескольких параллельных потоках, он по-прежнему использует разные потоки для запуска разных методов тестирования. Он использует один поток для запуска одного теста, а затем переключается на другой поток для запуска другого теста. Он продолжает переключаться между потоками для каждого метода тестирования. Вы можете легко проверить это, запросив идентификаторы потоков в различных тестах.
Я пытаюсь написать интеграционные тесты, которые инициализируют реальное приложение, использующее COM-объекты. Эти COM-объекты должны использоваться только в модели памяти STA, и у них нет прокси / заглушек, которые можно использовать для вызова их из другого потока.
COM-объекты приложения инициализируются во время первого теста в потоке, который использовался первым тестом. Тогда любой вызов к ним из других тестов завершается неудачей, потому что они вызывают их из разных потоков. Он генерирует InvalidComObjectException с «COM-объект, который был отделен от лежащего в его основе RCW, не может использоваться», поскольку он не может достичь COM-объект, который находится в другой квартире STA и не имеет маршалера прокси / заглушки.
Выполнение Visual Studio для запуска всех тестов в одном и том же потоке решит проблему, поскольку все COM-объекты будут инициализированы и использованы в одном и том же потоке из одной и той же STA-квартиры.