2013-01-11 6 views

Antwort

6

Es stellt sich heraus, dass diese Funktionalität in NUnit existiert, es ist einfach nicht sehr offensichtlich oder intuitiv.

Laut Charlie Poole in der Feature-Anfrage, die ich für diese Funktionalität here gemacht, sagt er Folgendes wird funktionieren, die ein direktes Zitat von ihm ist.

Eine Klasse außerhalb eines beliebigen Namespace mit [SetUpFixture] dekorieren. Dekorieren Sie eine Methode dieser Klasse mit [TearDown]. Wenn Sie möchten, dekorieren Sie ein anderes mit [SetUp].

Unterschiede von dem, was Sie fordern:

  1. Der Name es ein wenig nicht offensichtlich in dieser Verwendung macht.

  2. NUnit erlaubt eine beliebige Anzahl von diesen und ruft sie alle auf, ohne irgendeine Garantie für die Bestellung. Das ist Absicht.

  3. Es kann auf eine statische oder Instanzmethode angewendet werden. Wenn es sich um eine Instanzmethode handelt, muss die Klasse einen Standardkonstruktor haben, und es wird mit einer Lebensdauer des gesamten Testlaufs erstellt. Dies ist auch durch Design.

Nun ist dies nicht schön, aber es sollte die gleiche Funktionalität zu erreichen, und vielleicht wird er es ein wenig sauberer in 3.0 machen. :)

+0

Ab NUnit 3, löst dies eine Ausnahme: 'OneTimeSetUp: TearDownAttribute Attribut nicht erlaubt in einer SetUpFixture', ändern es zu '[OneTimeTearDown]' behebt dies. – MrLore

1

Es gibt kein solches Konzept in NUnit. Sie können jedoch TestFixtureTearDownAttribute auf die Methode anwenden, um die von TestFixture erhaltenen Ressourcen freizugeben.

+0

Danke das ist, was ich befürchtet habe, da es nicht verwaltete Ressourcen gibt, die von allen TestFixtures verwendet werden, die aufgeräumt werden müssen und als ich ein MSTest-Projekt an NUnit portierte, traf ich dieses Problem. –

+0

Erstellt eine Feature-Anforderung, damit NUNit hinzugefügt werden kann. Wenn Sie interessiert sind, finden Sie hier: https://bugs.launchpad.net/nunitv2/+bug/1098766 –

Verwandte Themen