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