Java Сбой вызова метода в afterScenario karate - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь отправить информацию об объекте karate.info в InfluxDB, но когда я пытаюсь вызвать метод java в afterScenario, он выдает ошибку.

игнорировать: Код содержит только метод вызова соединения.

Код:

* 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");
}

используется 'каратэ. call (inFluxDb.DBConnection ("http://localhost: 8086 ", "root", "root")); ' также, но вижу ту же ошибку. Я видел https://github.com/intuit/karate/blob/master/karate-core/src/test/java/com/intuit/karate/core/MandatoryTagHook.java, какие-нибудь мысли о том, как настроить этот класс?

Java используемый класс

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");
    }
}

1 Ответ

1 голос
/ 18 апреля 2020

Не могу сказать, не увидев ваш Java код. Выполните этот процесс: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

Но да, для таких сложных вещей, возможно, вы должны использовать ExecutionHook, вы можете найти детали здесь: { ссылка }

...