Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
NUnit (2.5.10)-> Event/Attribute Tests finished
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

NUnit (2.5.10)-> Event/Attribute Tests finished

beantworten | zitieren | melden

Wir lassen verschiedene TestFixtures innerhalb eines Assemblies laufen. Was wir wollen ist nicht für jedes Fixture das unterliegende Framework zu initialisieren und im FixtureTearDown zu Disposen. Wir wollen das Ganze einmal pro Lauf. Jetzt könnte ich mich zwar auf das AppDomain.CurrentDomain.ProcessExit hängen um dort zu Disposen, das löst aber nicht alle Probleme.

Das Initialisieren des Frameworks muss zwingend immer vom gleichen Thread accessed werden (Das kann ich leider nicht ändern). Das geht so lange ich einen gesamten Lauf für sich betrachte. Startet aber jemand ein einzelnes Fixture, z.B. via UI und anschließend ein weiteres, dann knallt es beim 2ten weil das Fixture in einem neuen TestRunner der in einem neuen Thread läuft ausgeführt wird. Ich habe schon versucht das zu unterbinden aber keine Lösung gefunden. Was mir eigentlich fehlt ist ein Event/Attribute ala der TestLauf ist beendet. Dort kann ich dann einfach Dispose vom Framework aufrufen. Oder aber der TestRunner wird immer mit dem gleichen Thread erzeugt solange die NUnit Instanz die gleiche ist.

Bin für jede Info Dankbar.

Edit: Die Möglichkeit IAddin zu implementieren ist nicht praktikabel weil die Tests in verschiedenen Umgebungen ausgeführt werden, die das unter Umständen nicht unterstützen.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rollerfreak2 am .
Again what learned...
private Nachricht | Beiträge des Benutzers
Parso
myCSharp.de - Member



Dabei seit:
Beiträge: 160

beantworten | zitieren | melden

google hilft

SetUpFixtureAttribute (NUnit 2.4)
Wenn's zum weinen nicht reicht, lach drüber!
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

Und in wieweit soll mir das helfen? Die Attrbiute sind mir doch längst bekannt nützen aber nichts, denn ich brauche einen Call vor dem gesamten Lauf und nach dem gesamten lauf.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rollerfreak2 am .
Again what learned...
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

Mehr gibts aber nicht.

Ein Unit-Test muss in sich abgeschlossen sein und sollte keine Abhängigkeit haben, ob irgend ein Framework ausserhalb des Tests initialisiert ist.

Wenn das nicht möglich ist darf eben nur ein Test gleichzeitig laufen.
private Nachricht | Beiträge des Benutzers
Parso
myCSharp.de - Member



Dabei seit:
Beiträge: 160

beantworten | zitieren | melden

Hallo,

soweit mir bekannt ist die höchste Ebene für Test-Setups, ist eine Intialisierungen auf Assembly-Ebene, also für alle Tests einer Assembly.
Zitat
A SetUpFixture outside of any namespace provides SetUp and TearDown for the entire assembly.

Ms-Test unterstützt glaub auch nicht mehr - also maximal auf Assembly-Ebene...ggf. gibts ne möglichkeit ein Session-Setup zu machen, hab ich aber bisher noch nicht gesehen.

vg
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Parso am .
Wenn's zum weinen nicht reicht, lach drüber!
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

@Mabo: Die Tests sind in sich abgeschlossen, aber dadurch eben langsam (In unserem Fall). Daher die versuchte Optimierung.

Es gibt via Addin die Möglichkeit, sich in den TestRunStarted und TestRunFinished zu hängen, jedoch gibt es diese Möglichkeit nicht als Attribut. Warum das so ist bleibt das Geheimnis der NUnit Entwickler.
Again what learned...
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

Ein Unit-Test ist dazu da, dass ein kleiner Schnipsel von Code auf seine Richtigkeit überprüft wird.
Es hört sich hier so an, als ob ihr Unit-Tests als Integrationstests missbraucht.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

In dem Fall hast du recht, wir missbrauchen das Framework für Integrationstests. Ändert aber nichts an meinem Problem :(
Again what learned...
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

Das Problem lässt sich allerdings mit der eingesetzten Technik nicht bzw. nur umständlich lösen.
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

Mir fällt ja nicht mal eine umständliche Lösung ein, wenn du eine hast dann wäre ich dir Dankbar wenn du sie mir mitteilst.
Again what learned...
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

Quellcode runterladen und die benötigten Funktionen selber implementieren :)
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

Ich glaub das hier sieht vielversprechend aus Setup/TearDown Attribute.
Again what learned...
private Nachricht | Beiträge des Benutzers
mabo
myCSharp.de - Member



Dabei seit:
Beiträge: 335

beantworten | zitieren | melden

Das hat doch Parso schon im zweiten Beitrag geschrieben; hat dir aber nicht gereicht. ?(
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

Themenstarter:

beantworten | zitieren | melden

Das ist falsch, parso hat vom FixtureSetup geschrieben das ist in der Tat nicht ausreichend. Aber auf der Seite war es unten mit als Unterlink aufgeführt den ich wohl übersehen habe.
Das von mir gepostete ist ein SetUp Attribute und erfüllt genau das was ich brauche, zwar mit ein paar unschönen Randbedingungen aber taugt trotzdem!

Edit: Ich nehme alles zurück. Die Doku von den Attributen ist irreführend bzw. verwirren sie zumindest mich. DAs SetUp Attribute ist das falsche weil das für jeden Test im Fixture gerufen wird. Das SetupFixture Attribut kann dazu benutzt werden.
Zitat
This is the attribute that marks a class that contains the one-time setup or teardown methods for all the test fixtures under a given namespace. The class may contain at most one method marked with the SetUpAttribute and one method marked with the TearDownAttribute.

There are a few restrictions on a class that is used as a setup fixture.

* It must be a publicly exported type or NUnit will not see it.
* It must have a default constructor or NUnit will not be able to construct it.
Sorry für die Missverständnisse ich versuch das jetzt mal so.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rollerfreak2 am .
Again what learned...
private Nachricht | Beiträge des Benutzers