2009-07-10 6 views
7

Ich verwende Resharper 4.5 mit Visual Studio 2008 und MBUnit-Tests, und es scheint etwas seltsam zu sein, ReSharpher zu verwenden, um die Tests auszuführen.Resharper, der alle Tests ausführt, wenn nur ein einzelner ausgewählt ist

Auf der Seite befinden sich die Symbole neben der Klasse jede Testmethode mit den Optionen Ausführen und Debuggen. Wenn ich Run wähle, zeigt es mir nur die Ergebnisse des einzelnen Tests. Ich bemerkte jedoch, dass der Test sehr lange dauerte.

Als ich Sql Server Profiler lief und durch den Code zu gehen, erkannte ich, dass es nicht nur den ausgewählten Test, sondern jeden einzelnen in der Klasse ausgeführt wird. Gibt es einen Grund dafür, dass es so aussieht, als ob es nur einen Einheitstest ausführt, während sie alle laufen?

Es wird zu einem Schmerz, der darauf wartet, dass alle Integrationstests ausgeführt werden, wenn ich mich nur um die Wiederverwendung von einem kümmere, gibt es eine Möglichkeit, dies zu ändern?

+0

Verwenden Sie Gallio zum Ausführen von MBUnit-Tests? –

+1

Welche Version von Gallio verwendest du? Ältere Versionen enthielten einen Fehler, der zu einem ähnlichen Verhalten führte> –

+0

Ich habe Gallio installiert, aber ich glaube nicht, dass ich damit die Tests durchführe. Ich benutze nur die MBUnit-Exe. Wie kann ich feststellen, ob VS Gallio verwendet? Die installierte Version ist 3.0.0.179. – Brandon

Antwort

5

ich gerade dies heute begegnet, und ich glaube, ich habe vielleicht klar, was diesen Fehler verursacht, hatte ich meine Methoden ähnlich

namens
[TestMethod] 
    public void TestSomething() 

    [TestMethod] 
    public void TestSomethingPart2() 

ich sah, dass TestSomething() laufen beide laufen würde, aber TestSomethingPart2() läuft nicht. Ich folgerte, wenn Sie Methoden benennen, dass eine genaue Übereinstimmung für den Methodennamen auftreten kann, wird der Test ausgeführt. Nach dem Umbenennen meines zweiten Tests zu TestPart2Something ging dieses Problem weg.

+0

Das ist ziemlich interessant. Hat jemand anderes dieses Problem bestätigt? –

+1

Ich habe dieses Verhalten bemerkt, obwohl meine Methodennamen völlig verschieden sind! –

+0

Wer einen bestimmten Zeitpunkt abgelehnt hat, antwortet über bestimmte Versionen der Technologie 7 Jahre nachdem die Frage gestellt wurde ... du bist nur dumm –

0

Wenn Sie mit der rechten Maustaste in den Editor klicken, wird das Kontextmenü angezeigt, in dem Sie Tests ausführen und debuggen können. Klicken Sie mit der rechten Maustaste in eine Testmethode, um diesen einzelnen Test auszuführen oder zu debuggen. Klicken Sie mit der rechten Maustaste außerhalb einer beliebigen Testmethode, um die gesamte Testklasse in der aktuellen Datei auszuführen oder zu debuggen.

+0

So bedeutet das Symbol neben der Methodendeklaration, die "(Methodenname) Run" bedeutet wirklich "ganze Klasse ausführen"? Das scheint sehr irreführend ... – Brandon

+0

Ich habe es nicht geschrieben, also kann ich es nicht wirklich sagen. Hat das Kontextmenü mit der rechten Maustaste funktioniert? –

+1

Nein, es läuft immer noch alle, auch wenn ich mit der rechten Maustaste klicke und Run Unit Tests sage. – Brandon

0

Die aktuelle Version von Gallio enthält einen Unit Test Runner mit MbUnit (und NUnit) Unterstützung eingebaut.

Im Menü "Resharper" haben Sie die Möglichkeit, einen einzelnen Komponententest oder alle Tests in Ihrer Lösung auszuführen. Was cool ist, ist, dass die Tastatur-Shortcuts für diese sind:

  • Alt + R, U, R - Run-Test von aktuellem Kontext (wenn Sie bei einer [Test] Ebene sind, es läuft einen Test, wenn Sie bei einer [TestFixture] Ebene, es läuft alles in der Halterung)
  • Alt + R, U, N - führt alle Unit Tests in Ihrer Lösung

ich empfehle Ihnen, deinstallieren Ihre aktuelle Gallio hoch und dann Überprüfen Sie C: \ Programme \ Jetbrains \ Resharper \ plugins \ bin und löschen Sie dort und Dateien. Dann installiere Gallio neu.

Sobald Sie dies getan haben, sollten Sie VS2008 und goto im Resharper | starten Plugins-Menü, um zu überprüfen, ob das Gallio-Plugin aktiv ist. Dadurch erhalten Sie Unterstützung für MbUnit.

3

Ich hoffe, das zeigt sich unter Chris Post.

Ich hatte eine ähnliche Situation, die das Verhalten bestätigt, das er bemerkte.

[TestMethod()] 
public void ArchiveAccountTest() 

[TestMethod()] 
public void ArchiveAccountTestRestore() 

So ausgeführt würde die erste Methode beide ausführen und die zweite würde nicht ausgeführt werden. Ich habe meine zweite Methode in TestRestore umbenannt und das Problem ist verschwunden.

Hinweis: Ich verwende Resharper 5.1, so ist es immer noch ein Problem.

5

Ich kann bestätigen, dass dies ein Problem mit ReSharper 5.1 ist.

Um Test A aus meinem Beispielcode zu reproduzieren (alle Tests werden ausgeführt); Test AB ausführen (alle außer A werden ausgeführt); etc:

[TestMethod] 
public void A() 
{ 
    Console.WriteLine("A"); 
} 

[TestMethod] 
public void AB() 
{ 
    Console.WriteLine("AB"); 
} 

[TestMethod] 
public void ABC() 
{ 
    Console.WriteLine("ABC"); 
} 

[TestMethod] 
public void ABCD() 
{ 
    Console.WriteLine("ABCD"); 
} 

[TestMethod] 
public void ABCDE() 
{ 
    Console.WriteLine("ABCDE"); 
} 

Es dauerte mich ewig, um dies zu erarbeiten. Ich hatte den Remote-Debugger an einen Entwicklungsserver angeschlossen, und es war ein bisschen häufiger zu brechen, als ich es erwartet hatte ...

Es scheint eine StartsWith statt einer enthält, wie andere gesagt haben. Die Problemumgehung besteht darin, dass Testmethodennamen nicht mit dem Namen eines anderen Testmethodennamens beginnen.

Verwandte Themen