TransactionScopeロールバックは、SeleniumまたはWatinで使用できますか?

StackOverflow https://stackoverflow.com/questions/1004292

質問

ASP.NETアプリケーションの自動Webテストを実行しようとしています。 Xunit.net拡張機能のAutoRollback属性を使用して、テスト中に行われたデータベースの変更を元に戻すことを望んでいました。 AutoRollbackは、TransactionScopeを使用して、テストの前にトランザクションを開始し、後でロールバックします。

トランザクション中にWebアプリケーションをヒットしようとすると、常にタイムアウトになります。これはうまくいくようです、何かアイデアはありますか?ここに私のテストがあります:

[Fact]
[AutoRollback]
public void Entity_should_be_in_list()
{
    Entity e = new Entity
    {
        Name = "Test",
    };
    dataContext.Entities.InsertOnSubmit(e);
    dataContext.SubmitChanges();

    selenium.Open("http://localhost/MyApp");
    Assert.True(selenium.IsTextPresent("Test"));
}
役に立ちましたか?

解決

ASP.NETアプリケーションには個別のデータベースコンテキストがあり、Xunit.netによって開始されたトランザクションに参加させたいとは考えていません。どうやら、データベースはトランザクションの開始時にいくつかのリソースをロックします。 Webアプリケーションはしばらく辛抱強く待機し、最終的にはgivesめます。

あなたの最善の策は、空のデータベースから開始し、SQLスクリプトを使用してスキーマを作成し、ルックアップテーブルに入力することです(データベースはソース管理下ですよね?)。別のアプローチは、テストを実行する前にデータベースをバックアップし、テストが終了したら復元することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top