ابتداء من خادم ويب التنمية ASP.NET (كاسيني) كجزء من الإعداد وحدة الاختبار؟

StackOverflow https://stackoverflow.com/questions/328566

سؤال

وأنا باستخدام WatiN، NUnit وReSharper لتشغيل بلدي وحدة الاختبارات ASP.NET داخل برنامج Visual Studio. أود (إذا لم يكن قيد التشغيل بالفعل) لبدء كاسيني لإجراء اختبارات ضد بلدي.

هل هذا ممكن؟ كيف أفعل ذلك؟

هل كانت مفيدة؟

المحلول

والملقم كاسيني هو WebDev.WebServer.EXE. هناك العديد من بلوق التي تظهر كيفية تشغيله يدويا. هنا هو واحد:

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

نصائح أخرى

ولقد صدر بيتا CassiniDev 3.5.1 / 4.0.1 مع بسيطة على سبيل المثال اختبار اعبا اساسيا إذا كنت مهتما.

وكاسيني للمطورين واختبار: http://cassinidev.codeplex.com

ومو بيتا، كلمة واحدة.

إليك بعض التعليمات البرمجية:

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;
}

لاستخدامه، تحتاج إلى اكتشاف المسار إلى ملف CSPROJ للمشروع على شبكة الإنترنت تحت الاختبار. سأترك ذلك باعتبارها ممارسة للقارئ (أنا عندي حاليا من الصعب ترميز).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top