2017-02-23 88 views
0

我想逃离我的测试案例中的批处理文件使用下面的代码在一个特定的端口上启动appium服务器:在詹金斯使用批处理文件来触发的testng.xml

String cmd="cmd /c \"cd C:\\Program Files\\Appium\\node_modules && start C:\\GitRapo\\MyProject\\samplenote2.bat\""; 
Runtime r=Runtime.getRuntime(); 
    Process pr=r.exec(cmd); 

samplenote2.bat是

节点appium --address 127.0.0.1 -p 4727 @pause

在此之后休息我的测试案例应该在此appium执行:这将打开命令提示符的新实例,并给出以下命令的批处理文件服务器。当我手动运行testNGBatchFile.bat时,我能够调用testng.xml,然后调用samplebody2.bat在测试用例中指定并执行其他操作。但在jenkins的情况下,testNGBatchFile.bat执行时能够调用testng.xml,但无法调用代码中提到的批处理文件(即无法启动appium服务器)

任何人都可以帮助我解决这个问题吗?

回答

0

它不是詹金的问题。当您手动运行它时,我假设您打开该目录并运行,这意味着您位于相同的目录中。

但是,当您通过代码/批处理文件运行它时,不会发生同样的情况。您需要导航文件所在的目录。

尝试添加cd命令并在执行每个文件(包括批处理文件以及testNG xml)之前提及相应的目录。

例如: 如果你想运行位于C内的批处理文件:\测试\ run.bat中

然后你里面的批处理文件第一条语句应该是

cd C:\Test 

同对于testNG文件,如果您正在运行testNG XML文件。

此外,在Java代码中,如果您正在调用任何批处理文件,请首先更改目录。它应该工作。

+0

已经做了你在说什么。在testNGBatchFile.bat中,我正在设置项目位置,cd%projectlocation%,为bin和lib文件夹设置classpath,然后执行testNG.xml。对于其他批处理文件,我已经提到了上面的代码。先导航到位置,然后调用批处理文件。当我在Jenkins中调用testNGBatchFile.bat时,问题在于它能够调用testNG.xml,但无法打开新的cmd提示符以启动“samplenote2.bat”,因为我的测试正在被跳过。我可以在执行cmd节代码之前在控制台中打印一些消息。 – Amrit

+0

@Amrit你可以添加完整的代码吗? – Vinod

+0

整个代码的PFB链接。 https://github.com/amritkrishan/Appium/tree/master/MyProject – Amrit