2013-03-27 33 views
0

在下面的代码片段中,我使用ClassInitialize和Cleanup来围绕我正在运行的一系列测试进行事务处理。该代码在我的GUI测试运行器中工作,但在mstest命令行中出现以下错误。我能够强制类清理并初始化在同一个线程中?不希望使用测试初始化​​和清理,因为它会显着降低测试速度。我可以强制ClassCleanup在与ClassInitialize相同的线程中执行吗?

CODE

 private static TransactionScope _trans; 

    [ClassInitialize] 
    public static void ClassInitialize(TestContext context) 
    { 
     _trans = new TransactionScope(); 
     //...do work 
    } 

    [ClassCleanup] 
    public static void ClassCleanup() 
    { 
     _trans.Dispose(); 
    } 

错误

运行有以下问题(补):类清理方法 GeoMetExplainSheetTests.TestCleanup失败。错误消息: System.InvalidOperationException:一个TransactionScope必须创建它在同一线程上设置 ..

堆栈跟踪:

在System.Transactions.TransactionScope.Dispose()

+0

发现这篇文章强调了在单独的线程上调用这些方法。嗯..无赖...希望你们中的一个人对我有答案!? http://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspx – TimmyD 2013-03-27 15:01:17

回答

0

我建议你通过删除static modifier

更换
+0

感谢您的建议,但不可能,因为不幸的是,ClassInitialize和ClassCleanup属性需要通过方法定义是静态的。 – TimmyD 2013-03-27 14:46:10

相关问题