Reihenfolge von Unit Tests festlegen

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Reihenfolge von Unit Tests festlegen

    Hallo Leute,

    Ich schreibe geerade für eine Datenbankanwendung meine Unit-Tests, um sicher zu gehen, das am Ende das richtige drinne steht und das Programm nirgends abstürtzt.


    Dazu Fülle ich die Dantenbank mit Daten, ändere diese wieder, lösche sie, ändere nicht existente Daten und so weiter und so fort.
    Um nun Daten in der Datenbank ändern zu können, müssen sie erst mal da sein. Um es einfacher zu machen, wollte ich die Daten verwenden, die im laufe des Tests in der DB landen.

    Da Visual Studio jedoch in einer anderen Reihenfolge arbeitet als die Tests aufgelistet sind, kann es passieren, das er die Sachen in der falschen Reihenfolge testet und so natürlich die möglichkeit besteht, das der Tests nicht richtig getestet wird... hoffe ich habe das rüber gebracht was ich rüber bringen will ;)

    Auf jeden Fall ist nun die Frage, ob und wie ich die Reihenfolge der Tests festlegen kann (ich verwende VS2010)
    Du kannst vor jedem einzelnen Test eine Prä-Prozedur laufen lassen (gibt es in der Testklasse), in der Du sicherstellst, dass die DB den erforderlichen Zustand hat.
    Eine Reihenfolge würde ich nicht festlegen wollen, denn wenn irgend etwas die mal ändert, knallt es.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wäre eine möglichkeit. Nur weis ich auch aus langer sicht, das die aktuell vorhandenen Methoden diese bleiben werden und meine einzelnen Manager-Klassen sich nicht groß ändern werden. Das einzige was sich ändern kann, sind eventuelle Attribute einzelner Elemente, aber die Klassen sind schon so geschrieben, das ich die nur an einer Stelle aufführen muss und diese dann automatisch in die DB übernommen werden, bei hinzufügen und entfernen.

    Einen nötigen Zustand herzustellen kann natürlich in den jeweiligen Tests stattfinden, nur sind es aktuell vier Klassen mit jeweils 4-7 tests, und es werden nicht mehr betreffend der Datenbank (außer mein programm würde einen völlig neuen Nutzen bekommen, aber da ich nach Plichtenheft arbeite, ist dies extrem unwahrscheinlich, ich brauche nur das, was ich bisher habe) Von daher nutze ich diesen umstand aus und teste beispielsweise in dem ersten Test betreffend der member, ob sich diese in die datenbank schreiben lassen.

    Basierend darauf testet der zweite Test, das es keine Redundanzen in der DB gibt, in dem er den selben Member wieder in die Datenbank schreibt.

    Dannach werden welche von denen geändert, dann welche gelöscht, nicht existente gelöscht und so weiter und so fort. So das jeder Test den vorhergehenden vorraussetzt, was sich in einem geringen Rahmen hält und sich in dem Fall eben super anbietet.
    Derartige Tests sollten logisch und physisch unabhängig voneinander laufen, sonst werden möglicherweise Fehl-Bedingungen, die Du eigentlich finden willst, vom Test ausgeschlossen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich glaube zu wissen was du meinst, aber ich habe allein um solche Dinge zu verhindern allein für 3 Methoden einer Klasse schon Knappe 10 tests, weil wirklich alle erdenklichen Fälle getestet werden.

    Ich will da jetzt nicht groß rum diskutieren, mich würde einfach interessieren wie ich die reihenfolge meiner Unittests festlegen kann.

    Ich habe bei google etwa eine Stunde gesucht, aber nichts gefunden. Vielleicht falsche Suchbegriffe oder unverständniss der Englischen Sprache (im Sinne von Fehlinterpretertion), ich habe nichts gefunden.
    2 Minuten Suche: UnitTest
    .Dieser Namespace enthält viele Attribute, die dem Testmodul Testinformationen wie Datenquellen, Reihenfolge der Methodenausführung, Programmverwaltung, Agent/Host-Informationen und Bereitstellungsdaten zur Verfügung stellen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!