我刚刚将Visual Studio 2013,ReSharper 8.0.2和mspec更新到最新版本。

运行所有单元测试(某些测试正在创建需要为STAThread的UI控件)时,它运行良好。不要问我为什么有些测试是那样的并且不能分开进行。我希望这场比赛还不算太晚。我不知道这次更新时导致Threads成为MTA的原因是什么。

我可以通过检查EACH调用是否为STA来轻松解决此问题,以通过测试,如果它不是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吗?

最佳答案

这是由MSpec设计的,这是因为ReSharper's Runner发生了变化。

可以找到更多信息here

关于c# - 如何在STAThread模式下使用Resharper运行程序运行mspec,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19469453/

10-12 12:43