1

我有一个单元测试项目,我使用 Selenium 来自动化 UI 测试。目的是最终将其部署到 CI 服务器。作为此过程的一部分,我尝试在 IIS Express 中以编程方式启动网站。

因此,在单元测试类的 Setup 方法中,我想从命令行在 IIS Express 中启动网站,使用以下代码:

var console = new Process
                  {
                    StartInfo =
                    {
                      FileName = "cmd.exe",
                      RedirectStandardInput = true,
                      UseShellExecute = false
                    }
                  };
console.Start();
console.StandardInput.WriteLine("iisexpress /path:[my_path] /port:9090");

此代码有效,除非我尝试在 NUnit 测试的 Setup 夹具中运行它。在这种情况下,我无法获得新的控制台窗口来打开和执行代码。

4

1 回答 1

1

通常,cmd.exe除非您使用的是 Windows Shell,否则使用会出现问题。直接运行iisexpress进程如下

using (Process proc = new Process())
{
    proc.StartInfo.FileName = "iisexpress.exe";
    proc.StartInfo.Arguments = " /path:[my_path] /port:9090";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();
    proc.WaitForExit();
    //output from the process run
    Console.Out.WriteLine(proc.StandardOutput.ReadToEnd());
}

如果您需要使用 shell,则cmd.exe需要一个/C开关来执行作为参数传递的进程,如下所示:

    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.Arguments = "/C iisexpress /path:[my_path] /port:9090";
于 2013-11-14T00:51:09.683 回答