2009-09-21 5 views
0

Je prévois d'implémenter quelques tests en utilisant nUnit. J'ai également une bibliothèque d'enregistrement de métriques que je voudrais utiliser pour obtenir certaines métriques hors du test. Ladite banque de mesures est normalement utilisé dans des applications, et est généralement utilisé quelque chose comme ceci:Comment utiliser un objet persistant entre des objets de test NUnit?

// retrieve configuration. 
string path = GetPath(); 
bool option = GetOption(); 

// Set up metrics recording object. 
Metrics m = new Metrics(path, option); 

Do.Something(); 
m.AddRecord(new Record()); // Record some metrics on what just happened 

// later... 

m.Finish(); // let it know we're done. 

Maintenant, je pourrais créer une instance de cet objet en utilisant TestFixtureSetup et TestFixtureTeardown dans chaque objet (comme dans une classe de test parent) , mais je préférerais que cet objet métrique persiste tous les tests s'exécutent. Est-ce possible, et si oui, qu'est-ce qui est nécessaire pour faire cela?

Répondre

3

Vous pouvez utiliser le SetUpFixtureAttribute - "marque une classe qui contient les méthodes d'installation ou de démontage uniques pour toutes les installations de test sous un espace de noms donné."

+0

On dirait que c'est la façon nUnit. Merci! –

+0

Bien, je ne connaissais pas cet attribut ... –

1

Vous pouvez exposer l'objet Metrics comme un singleton, ou tout simplement comme une propriété statique d'une classe d'aide:

class TestHelper 
{ 
    public static Metrics Metrics { get; private set; } 

    static TestHelper 
    { 
     string path = GetPath(); 
     bool option = GetOption(); 
     Metrics = new Metrics(path, option); 
    } 

} 

OK, ce n'est pas un modèle très agréable, mais pour les tests unitaires, il devrait être très bien.

+0

Singleton ont leur place. Cela pourrait juste être un. :) –

+0

Oui, mais seulement s'il contrôle la classe Metrics ... –

Questions connexes