【问题标题】:Execute Command Line Statements from Within NUnit在 NUnit 中执行命令行语句
【发布时间】:2013-11-13 22:46:09
【问题描述】:

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

【问题讨论】:

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


    【解决方案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";
    

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2019-09-28
      相关资源
      最近更新 更多