我正在使用脚本模式与Katalon Studio创建一个测试用例,这是一个groovy脚本。我需要那个groovy脚本来执行一个将在Katalon项目文件夹中的.jar
。
出于测试目的,我创建了一个.jar,它创建了一个名为“the-file-name”的文件,并在控制台中输出一条消息。
我找到了一种在Groovy中执行命令的方法:
def command = "git --version"
def proc = command.execute()
proc.waitFor()
println proc.in.text
这将在Katalon控制台中打印git的版本。所以我猜想放“java -jar test.jar”就足够了,但即使执行似乎正确结束,似乎.jar也没有做任何事情。可以肯定的是,我使用de Windows命令行执行了相同的.jar,它运行得很好。创建文件并在控制台中写入消息。
执行时,Katalon控制台就像正确执行一样。没有错误消息,执行被标记为成功,但测试文件“the-file-name”无处可寻,我没有像在git命令中那样获得Katalon控制台中显示的.jar
控制台输出。
找到了办法。
public class CustomKeywords {
@Keyword
def runBatch(String path) {
def cmd = "cmd /c \"java -jar \"" + path + "\"\"";
runCmd(cmd)
}
def runCmd(String cmd) {
KeywordUtil.logInfo("cmd: ${cmd}")
def proc = cmd.execute();
def outputStream = new StringBuffer();
def errStream = new StringBuffer()
proc.waitForProcessOutput(outputStream, errStream);
println(outputStream.toString());
println(errStream.toString())
if(proc.exitValue() != 0){
KeywordUtil.markFailed("Out:" + outputStream.toString() + ", Err: " + errStream.toString())
}
}
}