2010-07-06 10 views
39

Wo sollte ich Code platzieren, der nur einmal ausgeführt werden sollte (und nicht einmal pro Klasse)? Ein Beispiel hierfür wäre eine Anweisung, die die DB-Verbindungszeichenfolge initialisiert. Und ich muss das nur einmal ausführen und ich möchte keine neue Methode in jeder "TestFixture" -Klasse platzieren, nur um das zu tun.Einmalige Initialisierung für Nunit

Antwort

46

Mit dem Attribut [SetUpFixture] können Sie Setup- und/oder Teardown-Code einmal für alle Tests unter demselben Namespace ausführen.

Here sind die Dokumente auf SetUpFixture. Nach der Dokumentation:

A SetUpFixture außerhalb jeder Namensraum bietet Auf- und Abbau für die gesamte Baugruppe.

Also, wenn Sie SetUp und TearDown für alle Tests benötigen, dann stellen Sie sicher, die SetUpFixture Klasse nicht in einem Namespace ist.

Alternativ könnten Sie immer eine statische Klasse definieren, um "globale" Testvariablen zu definieren.

+1

, das ist genau das, was ich suchte, danke :) –

+3

Nach dem [NUnit docs] (http://www.nunit.org/index.php? p = setupFixture & r = 2.5.5): "Eine SetUpFixture außerhalb eines beliebigen Namespace bietet SetUp und TearDown für die gesamte Baugruppe." Wenn Sie SetUp und TearDown für alle Tests benötigen, stellen Sie einfach sicher, dass sich die SetUpFixture-Klasse nicht in einem Namespace befindet. –

+1

Dies sind die aktualisierten Dokumente für das SetupFixture-Attribut für NUnit 3+: https://github.com/nunit/docs/wiki/SetUpFixture-Attribute Die große Änderung besteht darin, dass Sie die Attribute [OneTimeSetup] und [OneTimeTearDown] verwenden müssen die eigentlichen Methoden statt nur [SetUp] und [TearDown]. –

33

Erstellen Sie eine Klasse (ich nenne meine Config) und dekorieren Sie sie mit dem Attribut [SetUpFixture]. Die Methoden [SetUp] und [TearDown] in der Klasse werden einmal ausgeführt.

[SetUpFixture] 
public class Config 
{ 
    [SetUp] // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html 
    public void SetUp() 
    { 
    } 

    [TearDown] 
    public void TearDown() 
    { 
    } 
} 
+4

NUnit v3 ändert die Attribute leicht. siehe [v3 docs] (https://github.com/nunit/nunit/wiki/SetUpFixture-Attribute) –

9

NUnit 3:

[SetUpFixture] 
public class TestLogging 
{ 
    [OneTimeSetUpAttribute] 
    public void Setup() 
    { 
     DoStuff(); 
    } 
} 
+3

Der Name kann auch vereinfacht werden in '[OneTimeSetUp]'. – SharpC

Verwandte Themen