2009-07-24 4 views
2

Ich habe vor kurzem einige Inkonsistenzen in Lauf Unit-Tests innerhalb VS2008 vs laufen die gleichen Unit-Tests mit mstest auf der Kommandozeile angetroffen.Lauf Unit-Tests aus VS2008 vs mit mstest auf der Kommandozeile

Mein Szenario ist ein bisschen fortgeschritten, also habe ich wahrscheinlich ein paar Ecken getroffen. Ich habe viele datengesteuerte Komponententests, die gegen die gleiche DataSource laufen. Ich experimentiere auch gerne mit PostSharp. Also habe ich einen PostSharp-Aspekt geschrieben - TestDataSource - den ich auf einen Unit-Test-Typ anwende, nicht auf die Unit-Test-Methoden. Wenn der Typ erstellt wird, weist dieser Aspekt PostSharp an, das Attribut DataSource an jede Einheitentestmethode des Typs anzufügen.

die eingebaute Baugruppe in Reflector Prüfungs zeigt, dass jedes Testverfahren in der Tat mit dem richtigen DataSource Attribute zugeschrieben wird. Das Ausführen der Tests mit Mstest in der Befehlszeile verhält sich wie erwartet - jeder Test wird für die angegebene Datenquelle ausgeführt.

Allerdings läuft genau die gleichen Unit-Tests in VS2008 nicht die Datenquelle zu finden. Es ist, als ob VS2008 die gebaute Assembly ignoriert und den Quellcode betrachtet, was natürlich kein datengetriebener Test zu sein scheint, da das Attribut DataSource während des Builds injiziert wird.

Es gibt kein Problem mit bereitgestellten Elementen. Wenn Sie die DataSource manuell an die Tests anhängen, wird VS2008 sie glücklich ausführen.

Irgendwelche Ideen?

Antwort

0

Wenn Sie einen Haltepunkt in der Probe gestellt und die Liste der geladenen Module überprüfen, sollten Sie sehen, welche der genaue Pfad der Baugruppe sind Sie debuggen. Ist es der erwartete (in bin \ Debug)? Wenn Sie diese Datei mithilfe von Reflector öffnen, während der Debugger ausgeführt wird, sehen Sie PostSharp-Zeug darin?

Was seltsam ist, dass ein Teil der Postsharp Unit-Tests sind für MSTest geschrieben und sie laufen von Visual Studio ohne Problem ...

+0

Die geladene Assembly nicht aus bin \ Debug ist, da es sich um eine mstest Unit-Test ist. Es wird in das dedizierte Bereitstellungsverzeichnis kopiert. Aber es ist die korrekte Montage. Wenn ich es während der Ausführung des Debuggers mit Reflektoren begutachte, sehe ich das DataSource-Attribut, das von PostSharp bei der jeweiligen Komponententestmethode injiziert wird. Ich weiß nicht, ob es wichtig ist, aber unsere Produkte sind nicht in bin \ Debug, sondern alle Projekte sind in einem einzigen konsolidierten bin-Verzeichnis außerhalb des Lösungsordners eingebaut. DataSource ist ein spezielles Attribut. Hast du PostSharping versucht? – mark

+0

BTW, ziehst du es vor, dass ich einen Thread in PostSharp Foren dafür öffne? – mark

+0

Es ist einfacher für mich, das PostSharp-Forum zu überwachen. Wenn Sie sicher sind, dass MSTest die richtige, erweiterte Assembly lädt, dann weiß ich nicht, was falsch sein kann. –

Verwandte Themen