从NUnit内执行命令行语句

时间:2013-11-13 22:46:09

标签: c# unit-testing selenium nunit iis-express

我有一个单元测试项目,我正在使用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测试的安装夹具中运行它。在这种情况下,我无法获得一个新的控制台窗口来打开和执行代码。

1 个答案:

答案 0 :(得分:1)

通常,除非您使用的是Windows Shell,否则使用cmd.exe会有问题。直接运行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";