在CodedUI测试中,我使用System.Diagnostics.Process
(Process.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;"我的意思是在测试运行之后(它可能通过或失败,只要它没有关闭前端就没关系。)
答案 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())以检查流程是否真正存活?