Ich habe einige alte MbUnit Code, der wie folgt aussieht:Kann ein TestActionAttribute in NUnit BeforeTest vor der eigenen SetUp-Methode des Fixtures ausführen?
public class MyFixture {
[SetUp]
public void SetUp() {
// Add data to database
}
[Test, Rollback]
public void DoTest() {
// Tests with the data
}
}
Mein neues NUnit Rollback-Attribut ein bisschen wie folgt aussieht:
public class RollbackAttribute : TestActionAttribute
{
public override void BeforeTest(TestDetails testDetails)
{
// Begin transaction
}
public override void AfterTest(TestDetails testDetails)
{
// Abort transaction
}
}
Der Transfer abbrechen sollte in der SetUp hinzugefügt, um die neuen Daten ein Rollback Methode sowie Änderungen während des Tests selbst. 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 ersetze die vorhandenen Rollback-Attribute durch zusätzlichen Code in SetUp und TearDown. Einige meiner Tests erfordern jedoch das Ausführen außerhalb einer Transaktion (sie erstellen während des Testlaufs mehrere Transaktionen) Transaktionen um alle Testfälle würden ein wenig Sorgfalt erfordern. Ich würde lieber eine Lösung finden, die die vorhandenen Rollback-Attribute wiederverwenden kann.
Ja, ich denke, die anfängliche Implementierung, die ich refactoring war ein bisschen rückwärts - die SetUp-Methode sollte sich nicht auf ein pro-Test-Attribut verlassen, um sicherzustellen, dass sein Zustand ordnungsgemäß bereinigt wird, so ist es vollständig vernünftig, das ändern zu müssen. – Douglas
Es gibt keine Zugehörigkeit.Ich werde das Kopfgeld vergeben, sobald ich meine eigenen Sachen beendet habe und bin zu dem Schluss gekommen, dass diese Antwort für mich funktioniert. – Puppy
@Puppy ah, ich sehe, danke, ich dachte, Sie sind zwei Mitarbeiter. –