Frage

Ich versuche, einige automatisierte Web-Testing meiner ASP.NET-Anwendung zu tun. Ich hatte gehofft, das AutoRollback Attribut von Xunit.net Erweiterungen verwenden, um alle Datenbankänderungen rückgängig zu machen, die während des Tests durchgeführt wurden. AutoRollback verwendet Transaction eine Transaktion vor dem Test zu starten und es rollt danach zurück.

Wenn ich versuche, meine Web-Anwendung während einer Transaktion zu treffen, ist es aus immer mal. Es scheint, wie dies funktionieren soll, irgendwelche Ideen? Hier ist mein Test:

[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"));
}
War es hilfreich?

Lösung

Ihre ASP.NET-Anwendung verfügt über einen separaten Datenbankkontext, und es hat keine Ahnung, dass Sie es Transaktion von Xunit.net gestartet beitreten mögen. Offenbar sperrt die Datenbank einige Ressourcen, wenn Transaktion beginnt; Web-Anwendung wartet geduldig für einige Zeit und schließlich aufgibt.

Ich denke, Ihre beste Wette aus dem leeren Datenbank starten und SQL-Skript zu verwenden, um Schema zu erstellen und Lookup-Tabellen zu füllen (die Datenbank ist unter Quellcodeverwaltung , nicht wahr?). Ein weiterer Ansatz ist die Backup-Datenbank, bevor die Tests ausgeführt wird und es wieder dann, sobald sie fertig ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top