【发布时间】:2020-11-23 02:10:14
【问题描述】:
我只是想弄清楚 Java 互操作如何在空手道中工作,并查看了如下示例: https://www.swtestacademy.com/java-code-in-karate-api-tests/
我的java类是这样的:
import java.io.*;
import java.lang.Process;
public class Utils {
double m_x;
public Utils(double x) {
m_x = x;
}
public static void main(String[] args) {
System.out.println("Hello World");
}
public static int exec(String command) throws InterruptedException, IOException {
Runtime run = Runtime.getRuntime();
Process proc = run.exec(new String[]{"/bin/bash", "-c", command});
proc.waitFor();
return proc.exitValue();
}
public double nonStatic() {
return m_x;
}
public double nonStatic1(double i) {
return i+1;
}
}
我可以调用静态方法,但不能调用构造函数或非静态方法。 顺便说一句,我知道 Java 可以处理函数重载,但我不确定 JavaScript,所以这就是我使用不同函数名称的原因。
我调用非静态函数的尝试之一是这样的:
Scenario: nonStatic
* def nonStat =
"""
function() {
var Utils = Java.type('Utils');
var obj = new Utils(7.0);
return obj.nonStatic();
}
"""
* def result = call nonStat
* print 'result', result
Scenario: nonStatic(int i)
* def nonStat1 =
"""
function(i) {
var Utils = Java.type('Utils');
var obj = new Utils(7.0)
return obj.nonStatic1(i);
}
"""
* def result = call nonStat1 15
* print 'result1', result
我得到: javascript函数调用失败::3 TypeError:无法使用带有传递参数的构造函数Utils创建新对象;它们与它的任何方法签名都不匹配。
我曾希望将 JavaScript 数字转换为双精度数? main 函数和 exec 函数工作。两者都是静态的。我可以取回一个数字,但无法将一个数字从 karate/js 传递给 Java。
提前感谢您的帮助。
【问题讨论】:
-
顺便说一句,我第一次尝试使用整数,但后来我认为 JavaScript 只有一个数字,所以我在 Java 代码中将类型更改为 double。场景中仍有一些地方引用了整数。应该没关系。
标签: java testing interop karate