以下のコード スニペットでは、ClassInitialize と Cleanup を使用して、実行中の一連のテストをトランザクションでラップしています。コードは GUI テスト ランナーでは機能しますが、mstest コマンド ラインでは以下のエラーで失敗します。クラスのクリーンアップと初期化を強制的に同じスレッドにすることはできますか? テストの速度が大幅に低下するため、テストの初期化とクリーンアップを使用しないことをお勧めします。
コード
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: A TransactionScope は、それが作成されたのと同じスレッドで破棄する必要があります..
スタックトレース:
System.Transactions.TransactionScope.Dispose() で