Wie benutze ich TestCase in NUnit 2.5?

8

Ich habe eine Klasse Currency , die ich mit NHibernate in meiner Datenbank persistiere. Currency class sieht so aus:

%Vor%

Ich habe einen Komponententest mit [TestCase] wie folgt geschrieben:

%Vor%

Ich weiß, das ist falsch, aber ich weiß nicht, wie ich es schreiben soll. Kann das Ergebnis ein object sein?

    
Mark Allison 15.01.2012, 12:49
quelle

2 Antworten

17

Attributargument (für Result ) muss ein konstanter Ausdruck sein. Sie können keine Objekte wie jetzt erstellen.

Die Verwendung des Attributs TestCase eignet sich gut zum Testen von Fällen, in denen Sie mehrere einfache Eingaben / Ausgaben überprüfen müssen. In Ihrem Szenario können Sie jedoch so etwas tun (das heißt, wenn Sie nur überprüfen möchten, ob die ID-Code-Zuordnung korrekt ist):

%Vor%

Sehen Sie sich auch TestCase documentation an - sie bieten ziemlich gute Beispiele.

>

Bearbeiten : Mit Zuordnungstests wollte ich überprüfen, ob Ihre ORM-Mappings (NHibernate to Database) korrekt sind und wie gewünscht funktionieren. Normalerweise testen Sie das im folgenden Szenario:

  1. Erstellen Sie eine neue Entity-Instanz mit vordefinierten Werten (zB Currency )
  2. Neue Transaktion starten
  3. Speichern Sie die Entity ( Save + Flush + Evict , um sicherzustellen, dass NHibernate die gespeicherte Entity nicht mehr im Cache speichert)
  4. Entität abrufen
  5. Vergleiche abgerufene Werte mit vordefinierten Werten
  6. Rollback-Transaktion

Wenn ein solcher Test dann bestanden wird, sagt er mehr oder weniger, dass ich diese Entity mit diesen Werten speichern kann und sie dann mit genau den gleichen Werten abrufen kann . Und das ist alles, was Sie wissen wollten - Abbildungen sind korrekt.

Mit TestCase attribut tho ist die Überprüfung der Korrektheit ganzer Objekte ziemlich schwierig - es soll einfache Dinge testen. Sie können Workarounds wie in anderen Antworten vorgeschlagen verwenden (Argumente über TestCase übergeben), aber es wird schnell unlesbar und schwer zu pflegen (Stellen Sie sich Entität mit 6+ zu überprüfenden Eigenschaften vor).

Ich schlage vor, Ihren Test in einen zu teilen, der überprüft, ob die Zuordnung von id zu code korrekt ist (allerdings sehe ich wenig Sinn, es sei denn, Sie möchten immer bestimmte IDs zuordnen) zu bestimmten Codes) und andere zu überprüfen, ob Currency -Entität richtig auf die Datenbanktabelle zugeordnet ist.

    
k.m 15.01.2012, 12:55
quelle
3

In solchen Fällen übergebe ich Konstruktorargumente für das erwartete Ergebnis in den Testfall und führe die Überprüfung selbst durch. Obwohl es nicht so prägnant ist, wird es erledigt.

%Vor%     
dasblinkenlight 15.01.2012 13:03
quelle

Tags und Links