只有在上一个脚本(即Openfile.exe )已经完成执行时,我才希望该脚本为CreateNew.exe。
现在发生的事情是,当我运行TestNG.xml文件时,它按优先顺序运行所有@Test,在5秒内TestNg输出控制台显示所有@Test都被传递。
而我的AutoIT脚本仍然在后台并行运行。
守则如下:
@Test (priority=1)
public void CreateNew() throws Exception
{
Runtime.getRuntime().exec("exeFiles\\CreateNew.exe");
}
@Test (priority=2)
public void OpenaFile() throws Exception
{
Runtime.getRuntime().exec("exeFiles\\OpenaFile.exe");
}AutoIt文件的代码如下:
createnew()
Func createnew()
Sleep(2000)
Run("Mspaint.exe")
WinWaitActive("Untitled - Paint")
Send("!f")
Sleep(1000)
Send("n")
Sleep(2000)
WinClose("Untitled - Paint")
EndFunc ;==>createnew解决这一问题的可能办法是:
发布于 2016-07-27 15:07:38
我的回答借用了NarendraC的答案。
@Test (priority=1)
public void CreateNew() throws Exception
{
Process p = Runtime.getRuntime().exec("exeFiles\\CreateNew.exe");
p.waitFor();
}
@Test (priority=2, dependsOnMethods={"CreateNew"})
public void OpenaFile() throws Exception
{
Runtime.getRuntime().exec("exeFiles\\OpenaFile.exe");
}据我所知,问题是第一种方法在完成之前就已经退出了。通过将等待添加到进程中,它将等待它结束。我相信这会给你想要的结果。
发布于 2016-07-27 12:58:05
即使你不能尝试"dependsOnMethods",这在这个意义上也是有用的。
请查看下面的示例以供使用:
@Test (priority=2, dependsOnMethods={"CreateNew"})发布于 2016-07-27 12:38:08
我认为一种更好(尽管更复杂)的方法是使用消息队列和发布/订阅模型来代替线程睡眠。
https://sqa.stackexchange.com/questions/20753
复制相似问题