我刚刚更新到Visual Studio 2013,ReSharper 8.0.2和mspec到最新版本。
运行所有单元测试工作正常,一些测试正在创建需要STAThread的UI控件。不要问我为什么有些测试是这样的,不能分开。我希望如果这场比赛还为时不晚。我更新时,我不知道什么原因导致线程成为MTA。
我可以轻松快速解决这个问题,通过检查EACH调用来传递测试,如果它是STA,如果不是什么也不做,但是这不起作用,一些测试要求线程成为STA。我也尝试在调用的方法上添加[STAThread],但仍然不缺。
MSpec表示他们没有像NUnit [RequiresSTA]这样的类似属性。我不确定是否是MSpec或ReSharpers线程导致它成为MTA。
编辑:类似但答案没有解决问题
Why do I get an Invalid Operation Exception (non STA thread?) running this MSpec test on TeamCity?
编辑2:使用更新的mspec库分离问题并在VS 2012中运行单元测试,它工作正常并且线程的ApartmentState是 STAThread 。所以我现在总结说它与ReSharper 8.x有关,它在 MTA 中有线程池启动线程。任何人都知道如何配置ApartmentState?