C# 我可以强制ClassCleanup与ClassInitialize在同一线程中执行吗?
在下面的代码片段中,我使用ClassInitialize和Cleanup围绕我正在运行的一系列测试包装事务。代码在我的GUI测试运行程序中工作,但在mstest命令行中失败,出现以下错误。我能强制类清理和初始化在同一个线程中吗?最好不要使用测试初始化和清理,因为这会显著降低测试速度 代码C# 我可以强制ClassCleanup与ClassInitialize在同一线程中执行吗?,c#,C#,在下面的代码片段中,我使用ClassInitialize和Cleanup围绕我正在运行的一系列测试包装事务。代码在我的GUI测试运行程序中工作,但在mstest命令行中失败,出现以下错误。我能强制类清理和初始化在同一个线程中吗?最好不要使用测试初始化和清理,因为这会显著降低测试速度 代码 private static TransactionScope _trans; [ClassInitialize] public static void ClassInitia
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()中
我建议您通过删除
静态修饰符来替换
private TransactionScope _trans;
感谢您的建议,但这是不可能的,因为不幸的是ClassInitialize和ClassCleanup属性需要在静态方法上定义。找到这篇文章,其中重点介绍了在不同线程上对这些方法的调用。六羟甲基三聚氰胺六甲醚。。真倒霉希望你们当中有人能给我一个答案!?