2009-04-30 15 views
3

Ich frage mich, wie die Leute derzeit ihre Daten zurücksetzen/Testreste für ihre WatiN/Wartir-Tests bereinigen?WatiN Testdaten zurücksetzen/bereinigen

Nehmen wir zum Beispiel an, es gibt einen Test, um einen Benutzer in das System hinzuzufügen, und der Benutzername muss eindeutig sein. Offensichtlich sollte der erste Lauf ohne Benutzer gut funktionieren, aber der zweite Lauf wird ohne manuellen Eingriff fehlschlagen.

Antwort

3

Es gibt ein paar Strategien, die Sie dafür tun könnten, ich gehe davon aus, dass Sie WatiN verwenden, mit Nunit oder VS Unit Tests, um Ihre Tests durchzuführen.

Verwenden Transaktionen Ein Ansatz, der verwendet wird, wenn Testeinheit ist, dass Sie „wrap“ die gesamte Prüfung in einer Transaktion und bei Beendigung des Testrollback die Transaktion. In .net können Sie hierfür System.Transactions verwenden.

Erstellen Sie eine "Stub-Seite" Erstellen Sie eine Seite in Ihrer Anwendung, die die vorhandene Geschäftslogik verwendet, um Ihre Daten zu löschen. Diese Seite müsste gesichert und idealerweise nicht einmal in der Produktion eingesetzt werden. Dies ist der Ansatz, den ich empfehlen würde.

Einen Webdienst anrufen Entwickeln Sie einen Webdienst oder rufen Sie einen direkt aus der App-Ebene der Anwendung an, um das Löschen durchzuführen. Sie müssen das wahrscheinlich auch entwickeln.

Aufräumen direkt Erstellen Sie einige Klassen in Ihrem Testcode, um auf die Daten zuzugreifen und sie zu bereinigen.

Mit jeder dieser müssen Sie aufzuräumen, vor und nach dem Sie Ihren Test, d. H. In den Test-Setup-und Test Cleanup-Methoden. Der Grund, es zweimal zu tun, ist, dass Sie davon ausgehen sollten, dass Ihr Test fehlgeschlagen ist und nicht richtig gereinigt wurde.

Verwenden Sie Linq zu Sql AFAIK Wenn Sie Linq zu SQL verwenden, arbeitet es In-Memory und umschließt das gesamte Update in einer Transaktion für Sie automatisch. Wenn Sie einfach nicht SubmitChanges() aufrufen; Methode dann sollte es dir gut gehen, aber ich habe das selbst nicht getestet.

+0

Wie würden Sie mit System.Transations arbeiten, wenn Sie in LinqToSql Transaktionen festschreiben? – Mike737

-2

WatiN ist für UI-Tests.

Um das gesuchte Szenario zu testen, können Sie eine Benutzer-ID mit dem C# -Code generieren, der sie eindeutig macht (im Gegensatz zur Speicherung beim Erstellen des Tests).

+0

Ich verstehe, dass WatiN ist für UI-Automatisierungstests, aber es ist auch nützlich für Funktionstests, in denen wir versuchen, es zu verwenden. Leider machen wir das schon. Das Problem ist, dass es nicht wirklich elegant ist und von Zeit zu Zeit zufällig ausfallen kann und die Testdatenbank nach einiger Zeit aufgebläht ist. Was ich wirklich suche, ist eine Transaktionslösung, bei der die Daten nach dem Test zurückgesetzt werden können. – Mike737

1

Ich habe einen Entwickler gebeten, ein Skript zu erstellen, das die Datenbank zurücksetzt. Nach einer Reihe von Tests, ich nur dieses Skript aufrufen und von sauberen Datenbank starten.

0

Mike - Ihre Frage ist nicht einzigartig für Watir/WatiN. Es gilt für alle UI-Tests, also suchen Sie nach ähnlichen Lösungen für Selenium-, Windmill- und sogar Headless-Integrationstests (HtmlUnit, API-Tests usw.). Ich habe diese Frage ein paar Mal persönlich auf StackOverflow beantwortet.

+0

können Sie bitte einen Link zu Ihren Antworten in SO hinzufügen? – Buzzer