2016-03-22 5 views
4

Ich habe versucht, einen Testanzug zu entwerfen, der vor allen Tests eine globale Initialisierung durchführt. Wir können in Betracht ziehen, dass Tests in verschiedenen Klassen und Namespaces existieren. In der NUnit-Dokumentation habe ich nur ein Attribut mit dem Namen OneTimeSetUp gefunden, aber es funktioniert nur für Tests im selben Namespace.Wie erstellt man eine globale Initialisierung in NUnit 3.2?

Also entwarf ich mit inherting. Alle meine Testklassen enthalten eine Basis-Testklasse, in der der Konstruktor die globale Inizialisierung durchführt (mit Hilfe einer statischen Variablen, um zu überprüfen, ob sie initialisiert wurde), und das gleiche wie bei einem globalen Abbruch im Destruktor.

Mit ihm konnte ich mein Szenario erstellen. Wenn die Testversion ausgeführt wird, erstellt die Basistestklasse neue Objekte, da Tests in verschiedenen Klassen und Namespaces durchgeführt werden. Es führt zu einem Überladen im System und die nächsten Tests laufen langsam: Der erste Test läuft in 50 Sekunden, während ein anderer (der dasselbe in einem anderen Namensraum tut) in 120 Sekunden läuft.

Es gibt einen besseren Weg, um eine globale inicialization und eine globale Teardown ohne Auswirkung der Testleistung erstellen

Antwort

8

Sie sind richtig, dass OneTimeSetUp nur für Tests im gleichen Namensraum funktioniert, aber wie die SetUpFixture documentation Hinweise:

Eine SetUpFixture außerhalb eines beliebigen Namensraums bietet SetUp und TearDown für die gesamte Baugruppe.

So ist die Klasse würde wie folgt aussehen:

using System; 
using NUnit.Framework; 

[SetUpFixture] 
public class TestInitializerInNoNamespace 
{ 
    [OneTimeSetUp] 
    public void Setup() { /* ... */ } 

    [OneTimeTearDown] 
    public void Teardown() { /* ... */ } 
} 
+0

So in diesem Fall sollte ich 'anstelle von' TestFixture' SetUpFixture', wie Sie in Ihrem Codebeispiel richtig schreiben? –

+0

Ich werde beide Fälle versuchen und, wenn einige von diesen arbeiten, werde ich Ihren Ahnentäter betrachten. Vielen Dank! –

+0

Hoppla, es sollte SetUpFixture sein. Bearbeitet. – stuartd

Verwandte Themen