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?
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?
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.
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).
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 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.