如何使用一些java代码在groovy脚本中传递参数

时间:2016-05-28 14:22:52

标签: java groovy automation soapui

我想自动化测试。为此,我在soapui的groovy中编写了一个脚本。现在我使用java代码调用该脚本。但我想传递用户给出的参数。我看到了一些像soapui脚本或脚本引擎的界面。这会有帮助吗?我知道我不应该在没有尝试任何事情的情况下问,但我不知道如何开始。请帮帮我

1 个答案:

答案 0 :(得分:0)

我们假设src / test / groovy / com / ka / script.groovy中有一个脚本,src / test / java / com / ka / MyScriptTest.java中有一个测试

script.groovy

println "Hello ${name}"
name

MyScriptTest.java

package com.ka;

import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.lang.Script;
import org.junit.Test;

import java.io.*;

public class MyScriptTest {

    @Test
    public void executeScript() {
        Binding binding = new Binding();
        binding.setVariable("name", "anonymous");

        GroovyShell shell = new GroovyShell(binding);
        Script script = shell.parse(getScript("./src/test/groovy/com/ka/script.groovy"));

        ByteArrayOutputStream scriptOutput = new ByteArrayOutputStream();
        PrintStream newOut = new PrintStream(scriptOutput);
        PrintStream oldOut = System.out;

        try {
            System.setOut(newOut);
            Object result = script.run();
            System.out.println("result = " + result);
        } finally {
            System.setOut(oldOut);
        }

        System.out.println("script output = " + scriptOutput.toString());
    }

    private InputStreamReader getScript(String scriptPath) {
        try {
            return new InputStreamReader(new FileInputStream(scriptPath));
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

此处测试将name变量的值传递给脚本。这是你需要的,因为我不知道。