Karate afterScenario空手道中的Java方法调用失败

Karate afterScenario空手道中的Java方法调用失败,karate,Karate,我试图将karate.info对象详细信息发送到XDB,但当我试图在afterScenario中调用java方法时,它抛出了一个错误 忽略:代码仅包含连接调用方法 代码: 错误: 使用“karate.callinFluxDb.DBConnection,root,root;”也一样,但看到同样的错误。 我已经看到了,关于如何配置这个类有什么想法吗 使用的Java类 不能不看Java代码就说。遵循以下流程: 但是是的,对于这样复杂的事情,也许您应该使用ExecutionHook,您可以在这里找到详细

我试图将karate.info对象详细信息发送到XDB,但当我试图在afterScenario中调用java方法时,它抛出了一个错误

忽略:代码仅包含连接调用方法

代码:

错误:

使用“karate.callinFluxDb.DBConnection,root,root;”也一样,但看到同样的错误。 我已经看到了,关于如何配置这个类有什么想法吗

使用的Java类


不能不看Java代码就说。遵循以下流程:


但是是的,对于这样复杂的事情,也许您应该使用ExecutionHook,您可以在这里找到详细信息:

Java代码:public class InfluxDBCall{private static InfluxDB InfluxDB;public void DBConnectionString服务器URL、字符串用户名、字符串密码{influxDB=InfluxDBFactory.connectserverURL、用户名、密码;influxDB.enableBatchBatchOptions.DEFAULTS;System.out.printlConnection已创建;}我无法在评论中发布全部代码,以下是原始帖子上的确切代码。@SandeepPadala此过程有以下原因:-但也许其他人会帮助你,所有的bestExecutionHook都会帮助我,谢谢你的快速回复!!
* def inFluxDb = Java.type('utility.InfluxDBCall');
* configure afterScenario = 
"""
function(){
  var info = karate.info; 
  karate.log('after', info.scenarioType + ':', info.scenarioName);
  karate.log('after', info.scenarioType + ':', info.errorMessage);
  karate.log('after', info.scenarioType + ':', info.featureDir);
  karate.log('after', info.scenarioType + ':', info.featureFileName);
  karate.log('after', info.scenarioType + ':', info.scenarioDescription);
  inFluxDb.DBConnection("http://localhost:8086", "root", "root");
}
"""
19:43:52.318 [ForkJoinPool-1-worker-1] INFO com.intuit.karate - after Scenario:  
19:43:52.380 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - javascript function call failed: TypeError: inFluxDb.DBConnection is not a function
19:43:52.380 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - failed function body: function(){
  var info = karate.info; 
  karate.log('after', info.scenarioType + ':', info.scenarioName);
  karate.log('after', info.scenarioType + ':', info.errorMessage);
  karate.log('after', info.scenarioType + ':', info.featureDir);
  karate.log('after', info.scenarioType + ':', info.featureFileName);
  karate.log('after', info.scenarioType + ':', info.scenarioDescription);
  inFluxDb.DBConnection("http://localhost:8086", "root", "root");
}
public class InfluxDBCall {
    private static InfluxDB influxDB;

    public void DBConnection(String serverURL, String username, String password) {
         influxDB = InfluxDBFactory.connect(serverURL, username, password);
         influxDB.enableBatch(BatchOptions.DEFAULTS);

         System.out.println("Connection created");
    }

    public static void writeIntoDB(String Measurement,String featureName, String scenarioName, String status, String error) {
        influxDB.write(Point.measurement(Measurement)
                .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
                .tag("projectName","SPSAutomation")
                .tag("featureName", featureName.split(".")[0].toString())
                .addField("scenarioName", scenarioName)
                .addField("status", status)
                .addField("Error", error)
                .build());
    }

    public void connectionClose() {
        influxDB.close();
        System.out.println("Connection closed");
    }
}