Kann ein TestActionAttribute in NUnit BeforeTest vor der eigenen SetUp-Methode des Fixtures ausführen?

9

Ich habe einen alten MbUnit-Code, der so aussieht:

%Vor%

Mein neues NUnit Rollback-Attribut sieht ungefähr so ​​aus:

%Vor%

Der Rollback sollte die neuen Daten, die in der SetUp-Methode hinzugefügt wurden, sowie alle Änderungen während des eigentlichen Tests zurücksetzen. Unglücklicherweise scheint NUnits BeforeTest nach der SetUp-Methode des Geräts zu laufen, so dass die während SetUp hinzugefügten Daten nicht zurückgesetzt werden.

Gibt es eine Möglichkeit, BeforeTest vor dem Setup auszuführen?

Eine Option wäre eine Basisklasse und ersetzt die vorhandenen Rollback-Attribute durch zusätzlichen Code in SetUp und TearDown. Einige meiner Tests erfordern jedoch, dass sie außerhalb einer Transaktion ausgeführt werden (sie erstellen während des Testlaufs mehrere Transaktionen selbst) Um alle Testfälle herum würde ein wenig Sorgfalt nötig sein. Ich würde lieber eine Lösung finden, die die vorhandenen Rollback-Attribute wiederverwenden kann.

    
Douglas 10.07.2015, 13:52
quelle

1 Antwort

4
  

Gibt es eine Möglichkeit, BeforeTest vor dem Setup auszuführen?

Ich denke nicht, siehe z.B. diese entsprechende Diskussion in Google-Gruppen . Das Problem, das dort diskutiert wird, ist sehr ähnlich, wie Sie sehen können, Code in SetUp Methode würde sogar vor BeforeTest Methode laufen, die auf Test Fixture Level verwendet wird (Sie haben es auf Test-Ebene).

Umgehung von meinem Standpunkt aus wäre es, die SetUpAttribute von der Methode SetUp zu entfernen und die Methode SetUp explizit zu Beginn jedes Tests aufzurufen, d %Vor%

Ihre Frage hat mich auch an die Frage erinnert, dass marc_s in diesem SO-Thread angesprochen wurde. Die Frage hat nichts mit Ihrem Problem zu tun, aber er hat das gleiche Konstrukt verwendet, wie ich es oben vorgeschlagen habe, also ist es vielleicht nicht diese schlechte Idee.

BEARBEITEN:

Hier ist ein offenes Problem auf NUnits Github. Aber dennoch, Reihenfolge angefordert ist:

  

BeforeTest (BaseFixture)
  BaseSetUp BeforeTest (Fixture)
  Einrichten von
  BeforeTest (Test)
  Test AfterTest (Test)
  TearDown AfterTest (Fixture)
  BaseTearDown AfterTest (BasisFixture)

Also nicht genau was du willst, "BeforeTest (Test)" würde nach dem Setup ausgeführt werden.

    
Michal Hosala 14.07.2015, 00:19
quelle

Tags und Links