3 Stimmen

Starten des ASP.NET Development Web Server (Cassini) als Teil des Unit-Test-Setups?

Ich verwende WatiN, NUnit und ReSharper, um meine ASP.NET-Unit-Tests in Visual Studio auszuführen. Ich möchte (wenn es nicht bereits ausgeführt wird), Cassini zu starten, um meine Tests gegen laufen.

Ist dies möglich? Wie würde ich es tun?

8voto

Sky Sanders Punkte 34472

Ich habe gerade die Beta-Version von CassiniDev 3.5.1/4.0.1 mit einem einfachen Beispiel für eine Testvorrichtung veröffentlicht, falls Sie daran interessiert sind.

Cassini für Entwickler und Prüfer: http://cassinidev.codeplex.com

Mo betta, Wort.

2voto

Roger Lipscombe Punkte 84868

Hier ist etwas Code:

private static void GetDevelopmentServerVPathAndPortFromProjectFile(
    string csprojFileName,
    out string developmentServerVPath,
    out int developmentServerPort)
{
    XPathDocument doc = new XPathDocument(csprojFileName);
    XPathNavigator navigator = doc.CreateNavigator();

    XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
    manager.AddNamespace("msbuild",
        "http://schemas.microsoft.com/developer/msbuild/2003");

    const string xpath = "/msbuild:Project/msbuild:ProjectExtensions/"
                       + "msbuild:VisualStudio/msbuild:FlavorProperties/"
                       + "msbuild:WebProjectProperties";

    XPathNavigator webProjectPropertiesNode =
        navigator.SelectSingleNode(xpath, manager);
    XPathNavigator developmentServerPortNode =
        webProjectPropertiesNode.SelectSingleNode("msbuild:DevelopmentServerPort",
            manager);
    XPathNavigator developmentServerVPathNode =
        webProjectPropertiesNode.SelectSingleNode("msbuild:DevelopmentServerVPath",
            manager);

    developmentServerPort = developmentServerPortNode.ValueAsInt;
    developmentServerVPath = developmentServerVPathNode.Value;
}

private static string GetCommonProgramFilesPath()
{
    string commonProgramFiles =
        Environment.GetEnvironmentVariable("CommonProgramFiles(x86)");
    if (string.IsNullOrEmpty(commonProgramFiles))
    {
        commonProgramFiles =
            Environment.GetEnvironmentVariable("CommonProgramFiles");
    }
    if (string.IsNullOrEmpty(commonProgramFiles))
    {
        commonProgramFiles =
            Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles);
    }
    return commonProgramFiles;
}

private static Process PrepareCassiniProcess(int developmentServerPort,
                                             string projectPhysicalPath,
                                             string developmentServerVPath)
{
    string commonProgramFiles = GetCommonProgramFilesPath();
    string cassiniPath = Path.Combine(commonProgramFiles,
        @"Microsoft Shared\DevServer\9.0\WebDev.WebServer.exe");
    string cassiniArgs = string.Format(
        CultureInfo.InvariantCulture,
        "/port:{0} /nodirlist /path:\"{1}\" /vpath:\"{2}\"",
        developmentServerPort, projectPhysicalPath, developmentServerVPath);

    Process cassiniProcess = new Process();
    cassiniProcess.StartInfo.FileName = cassiniPath;
    cassiniProcess.StartInfo.Arguments = cassiniArgs;
    return cassiniProcess;
}

Um sie zu verwenden, müssen Sie den Pfad zur CSPROJ-Datei des zu testenden Webprojekts ermitteln. Ich überlasse das dem Leser als Übung (ich habe es derzeit fest programmiert).

1voto

rp. Punkte 17175

Der Cassini-Server ist WebDev.WebServer.EXE. Es gibt mehrere Blogs, die zeigen, wie man ihn manuell starten kann. Hier ist einer:

http://www.dotnetjunkies.com/WebLog/saravana/archive/2005/06/18/126143.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X