2009-07-24 8 views
2

Ich versuche, eine Klasse (einen Controller) zu testen, die nicht innerhalb der asp.net-Umgebung ausgeführt werden muss.Warum startet Cassini, wenn ich in VS2008 einen Unittest starte?

Aber wenn ich den Test starte, startet Cassini.

Wie kann ich die Cassini-Last vermeiden?

Dank

+0

Bereits gelöst hier: http://stackoverflow.com/questions/533412/what-causes-cassini-to-load-when-i-run-a-unit-test Wählen Sie dann das Projekt im Solution Explorer aus Sehen Sie sich das Eigenschaften-Dock (F4) an und ändern Sie "Immer beim Debuggen starten" auf "false". –

Antwort

0

Ihr Controller die asp.net-Umgebung benötigt, ist es der Handler für Ihre Anfragen. Sie können stattdessen festlegen, dass Ihre IDE IIS verwendet. Klicken Sie auf die Eigenschaftenseite Ihres Projekts und auf der Registerkarte Web sehen Sie ein Optionsfeld IIS verwenden, mit dem Sie ein virtuelles Verzeichnis einrichten können. Dann nicht mehr Cassini.

Wenn Sie die angelegt haben verfügen über Unit-Tests in Visual Studio dann haben sie einen Test wie dieser

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\working\\MDTest\\MvcApplication1", "/")] 
[UrlToTest("http://localhost:1169/")] 
public void AccountControllerConstructorTest() 
{ 
    //Implementation 
} 

Das UrlToTest gemacht Attribut ist, was cassini zu beginnen verursacht. Wie oben erwähnt, benötigt Ihr Controller die asp.net-Umgebung, da es sich um einen http-Handler handelt. Daher muss er über http aufgerufen werden, um ihn zu testen. Wenn Sie Cassini einfach nicht mögen (fair genug), dann brauchen Sie immer noch IIS, um es zum Laufen zu bringen.

Wenn Sie direkt auf Ihrem Web-Projekt klicken, und folgen Sie den Anweisungen am Anfang der Post, die Unit-Tests erstellen Features werden diese

[TestMethod()] 
[HostType("ASP.NET")] 
[UrlToTest("http://localhost/MvcApplication1")] 
public void AccountControllerConstructorTest()... 

produzieren, die ohne cassini läuft :)

+0

Ich möchte nicht IIS verwenden, ich muss nur die Klasse ohne Web-Umgebung testen. –

+0

Ich bin nicht sicher, warum Cassini damit beginnen würde. Ist dies ein Komponententest oder ein automatisierter Test? Vielleicht könnten Sie etwas Code für Ihren Test und vielleicht auch einen Teil des Zielcodes posten. Wenn es sich um einen Komponententest handelt, ist es nunit oder Microsoft? –

+0

Probier es einfach aus, lass es mich wissen, wenn es nicht hilft, oder stimme als Antwort ab, wenn es funktioniert :) –

0

Cassini sollte nur ausgeführt werden, wenn Sie Ihr Projekt debuggen oder ausführen (dh durch Drücken von F5 oder Ctrl-F5), nicht, wenn Sie Ihre Komponententests ausführen. Sie können ändern, was passiert, wenn Sie F5 drücken, indem Sie die Eigenschaften für Ihr ASP.NET-Projekt anzeigen und die Registerkarte Web auswählen. Sie haben nicht angegeben, wie Sie Ihre Tests ausführen, aber sowohl das Framework zum Testen von Visual Studio als auch Frameworks wie NUnit führen Ihre Tests in einem separaten Prozess aus, der nicht Cassini ist. Wenn Sie stattdessen ein eigenes Konsolenanwendungsprojekt zur Ausführung Ihrer Tests angegeben haben, sollten Sie sicherstellen, dass Sie dieses Projekt als StartUp Projekt festgelegt haben. Drücken Sie dann F5 wird Ihre Testkonsole Anwendung und nicht Cassini ausführen.

+0

Wenn ich versuche, den Test ohne Debug (von VS) auszuführen, startet Cassini. –

+0

Wenn Sie über ein ASP.NET-Webanwendungsprojekt verfügen und es (auf der Registerkarte "Web") für "Visual Studio Development Server verwenden" konfiguriert haben, wird Cassini beim Ausführen des Projekts gestartet. Es spielt keine Rolle, ob Sie die Debug- oder die Release-Version ausführen. Sie müssen entscheiden, was Sie anstelle von Cassini starten möchten, vielleicht eine Konsolenanwendung, oder ein Testframework wie das Built-in oder NUnit verwenden. –

0

Wenn Sie Ihre Tests im Debug-Modus ausführen, wird Cassini gestartet. Wenn Sie Ihre Tests ohne Debug-Modus ausführen, wird es nicht.

+0

Ich weiß jetzt nicht warum, aber es startet in beiden Modi (mit debuggen und ohne debug) –

+0

Sie haben möglicherweise mehrere Projekte als Startprojekt markiert, und/oder der Ausführungsmodus ist als Debug markiert anstatt aktiv für das Webprojekt. Es könnte auch ein Build-Ereignis in einem der Projekte sein. –

1

Das Problem war die Codeabdeckung. Ich habe es deaktiviert und jetzt startet cassini nicht mehr (ohne Debugging).

+1

@JorgeF Können Sie dies als die Antwort markieren, wenn Ihr Problem jetzt gelöst ist –

Verwandte Themen