我可以强制ClassCleanup在与ClassInitialize相同的线程中执行吗?

时间:2013-03-27 13:09:22

标签: c#

在下面的代码片段中,我使用ClassInitialize和Cleanup将事务包装在我正在运行的一系列测试中。该代码在我的GUI测试运行器中工作,但在mstest命令行中失败,出现以下错误。我可以强制类清理并初始化为同一个线程吗?不希望使用测试初始化​​和清理,因为它会显着减慢测试速度。

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()

1 个答案:

答案 0 :(得分:0)

我建议你删除static modifier

来替换
private TransactionScope _trans;