我如何从Process.Start

时间:2017-01-19 09:09:08

标签: c# coded-ui-tests

在CodedUI测试中,我使用System.Diagnostics.ProcessProcess.Start(exePath);)来执行.exe文件。现在我的问题是,执行测试后我的应用程序关闭(WPF前端)。我的问题是,如何让我刚开始独立于Process.Start()正在执行的线程的进程,这样一旦我运行了测试,exe就会继续运行。我希望它继续运行,因为还有其他UI测试需要前端运行。 (在每次测试开始时启动exe太昂贵而且速度慢) 我希望这很清楚。

这是我的代码:

//[TestInitialize()] has already started the exe, so I have my front end open.



    [TestMethod]
        [TestCategory("Default Layout")]
        static void Move_StartTimer_Button_To_The_Top_Right_Corner_Keeps_Keeps_Button_Even_After_App_Restarts()
        {
            Process myExe = Process.GetProcesses().FirstOrDefault(process => process.ProcessName == "MyAppName");
            var fileName = myExe?.MainModule.FileName;
            UIMap.Click_Close_Application();
            Assert.IsTrue(Application_Closed_Sucessfully);
            Process.Start(fileName);
Assert.IsTrue(Application_Layout_Has_Button_On_The_Top_Right_Corner);
        }

Move_StartTimer_Button_To_The_Top_Right_Corner_Keeps_Keeps_Button_Even_After_App_Restarts()执行完成后,我的应用也会关闭。如何在执行后保持前端运行?请注意:这是一个CodedUI测试代码,所以执行后#34;"我的意思是在测试运行之后(它可能通过或失败,只要它没有关闭前端就没关系。)

2 个答案:

答案 0 :(得分:1)

Process.Start只有启动一个自己的进程。它不会在任何时候终止该过程:

namespace ConsoleApplication5
{
  using System.Diagnostics;

  class Program
  {
    static void Main()
    {
      Process.Start("calc.exe");
    }
  }
}

这将启动计算器,程序本身将结束但计算器进程仍在运行。

答案 1 :(得分:0)

你可能没有朝着正确的方向前进。 Process.Start启动该过程,除非您调用Kill方法,否则该过程必须管理它自己的终止。请参阅:https://msdn.microsoft.com/fr-fr/library/system.diagnostics.process(v=vs.110).aspx

您是否尝试在启动流程后阻止您的程序(Console.ReadLine())以检查流程是否真正存活?