lundi 9 mars 2020

Running Karate test in Java API method

I want to run karate tests in API call so that it can be integrated to our automation framework. However I am getting below error.

java.lang.NullPointerException
com.intuit.karate.core.ScenarioExecutionUnit.init(ScenarioExecutionUnit.java:147)
com.intuit.karate.core.ScenarioExecutionUnit.run(ScenarioExecutionUnit.java:236)
com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:164)
com.intuit.karate.core.FeatureExecutionUnit.run(FeatureExecutionUnit.java:73)
com.intuit.karate.core.Engine.executeFeatureSync(Engine.java:109)
com.intuit.karate.Runner.runFeature(Runner.java:163)
com.intuit.karate.Runner.runFeature(Runner.java:172)
org.arul.service.JavaAPITest.testCallingFeatureFromJava(JavaAPITest.java:27)
org.arul.controller.KarateController.getDataDrivenResult(KarateController.java:27)

I created JAXRS Rest API project and calling Karate test in the service class. I want invoke karate test in REST API call. Is this possible?

KarateController.java

package org.arul.controller;

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.arul.service.JavaAPITest;

@Path("/datadriven")
public class KarateController {

    JavaAPITest javaAPITest = new JavaAPITest();

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String getDataDrivenResult() {
        System.out.println("Inside REST controller getDataDrivenResult");
        String results = javaAPITest.testCallingFeatureFromJava();
        return results;
    }

}

JavaAPITest.java (Service)

package org.arul.service;

import com.intuit.karate.Runner;

import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class JavaAPITest {

    private File getFileFromResources(String fileName) {

        ClassLoader classLoader = getClass().getClassLoader();

        URL resource = classLoader.getResource(fileName);
        if (resource == null) {
            throw new IllegalArgumentException("file is not found!");
        } else {
            return new File(resource.getFile());
        }

    }
    public String testCallingFeatureFromJava() {
        Map<String, Object> args = new HashMap();
        args.put("name", "World");
        Map<String, Object> result = Runner.runFeature(getFileFromResources("from-java.feature"), args, true);
        System.out.println("Karate result = "+result.get("greeting"));
        return (String)result.get("greeting");
    }   

}

Aucun commentaire:

Enregistrer un commentaire