2012-04-11 9 views
1

Ich benutze MSTest, wenn ich zuerst alle meine Unit-Tests (oder Tests für sich selbst) ausführen möchte ich eine eindeutige Kennung erstellen, die ich einfügen kann db-Datensätze, um den Test zu verfolgen. Das Problem besteht darin, dass dieselbe eindeutige Referenz für alle Tests erstellt und verwendet werden soll. Was ich wirklich verwenden möchte, ist ein DateTime-Stempel. Ich suche nach einem Ereignis, das immer erhöht wird, und dann kann ich es in einen statischen Container für die Dauer der Tests setzen und dann nur auf diesen statischen Container innerhalb der Tests zugreifen ... Ist das möglich? ....Wie kann ich eine einzige Variablen verwenden, um alle meine Tests zu verfolgen?

+0

Wofür ist diese eindeutige Kennung? Ich kann es nicht verstehen –

Antwort

0

Sie könnten das Attribut AssemblyInitialize für eine Methode verwenden, um sicherzustellen, dass es vor allen anderen Methoden in Ihrer Testbaugruppe ausgeführt wird. In dieser Methode könnten Sie Ihre eindeutige ID generieren und sie auf eine statische Variable setzen. Wenn Ihre Testmethoden Baugruppen umfassen, wird dies jedoch nicht funktionieren.

1

Sie die Strecke nach unten gehen könnte eine statische DateTime eine eigene Klasse von mit verantwortlich für das Halten:

public static class TestIdGenerator 
{ 
    private static readonly Lazy<DateTime> _testId = new Lazy<DateTime>(() => DateTime.Now); 
    public static DateTime TestId 
    { 
     get { return _testId.Value; } 
    } 
} 

in Ihrem Test, Sie darauf zugreifen mit

var testId = TestIdGenerator.TestId; 

Der Datetime eingestellt wird, die Zum ersten Mal wird auf die Eigenschaft TestId zugegriffen und bleibt bei jedem nachfolgenden Zugriff gleich, bis die CLR entladen wird. Dies geschieht, wenn alle Tests in einem bestimmten Testlauf abgeschlossen wurden.

Ich habe das gerade getestet, und es bleibt für alle Tests in der Vorrichtung konstant, ist aber dann beim nächsten Testlauf anders.

Verwandte Themen