在 Groovy 脚本中执行 .jar
Execute a .jar in a Groovy script
我正在使用 groovy 脚本的脚本模式使用 Katalon Studio 创建一个测试用例。我需要 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命令。
找到方法了。
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())
}
}
}
我正在使用 groovy 脚本的脚本模式使用 Katalon Studio 创建一个测试用例。我需要 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命令。
找到方法了。
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())
}
}
}