1

正常に動作している単体テストに SQLite を使用しようとしていますが、一部のリポジトリをテストすることは、トランザクションを使用するため問題があります。

ReadCommitted を使用するトランザクションの場合はすべて問題ありませんが、そのうちのいくつかは、System.Data.SQLite を見てサポートされていない ReadUncommitted を使用します。

if ((this._defaultIsolation != IsolationLevel.Serializable) && (this._defaultIsolation != IsolationLevel.ReadCommitted))
{
        throw new NotSupportedException("Invalid Default IsolationLevel specified");
}

Session.BeginTransaction(...) をインターセプトして、単体テストの場合にのみトランザクション レベルを変更できるかどうか疑問に思っています。

更新: 私の解決策は、System.Data.SQLite のソースコードをダウンロードし、例外を変更してデフォルトの分離レベルを設定することでした。私はここでそれについてブログを書きました:

http://www.philliphaydon.com/2011/01/system-data-sqlite-isolationlevel-exception/

4

1 に答える 1

0

ITransactionFactoryとを実装する以外に、簡単な拡張ポイントはありませんITransaction

BeginTransactionテスト時に ReadUncommitted を使用しないように、呼び出しをラップする方がおそらく簡単です。

于 2010-12-31T18:21:24.817 に答える