RShome
RShome

Reputation: 537

Missing steps when running feature file in IntelliJ

Intellij keeps saying Undefined Step when running my feature file. However, I have copied the steps and put them into another package and added that package name in the "glue" parameter for Edit configurations. Still not working.

I've added the feature file and it doesn't show any missing step references. I am adding a screenshot. I have added all the steps in another package. Please see below

enter image description here

The code for CountriesSteps is as follows

package Steps;

import Fixtures.Countries;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import org.junit.Assert;

public class CountriesSteps {

Countries countriesclass = new Countries();

@Given("^I generate a restful request for countries$")
public void iGenerateARestfulRequestForCountries() throws Throwable {
    countriesclass.GetCountries();
}

@When("^I receive a successful country response (.*)$")
public void iReceiveASuccessfulCountryResponseResponse(int code) throws Throwable {
    Assert.assertEquals(code, countriesclass.getsCode());
}

@When("^I receive a successful country response$")
public void iReceiveASuccessfulCountryResponse() throws Throwable {         
    Assert.assertEquals(200, countriesclass.getsCode());
}

@Then("^the api country response returns (.*)$")
public void theApiCountryResponseReturnsCountries(int countries) throws Throwable {         
    Assert.assertEquals(countries, countriesclass.getCount());
}

@Then("^the api country response returns (.*),(.*),(.*),(.*),(.*)$")
public void theApiCountryResponseReturnsCountriesNameCapitalPopulation(int countries, int index, String name, String capital, int population) throws Throwable {         
    Assert.assertEquals(countries, countriesclass.getCount());
}

@Then("^the api country response for Index (.*) returns (.*),(.*),(.*)$")
public void theApiCountryResponseForIndexIndexReturnsNameCapitalPopulation(int index, String name, String capital, int population) throws Throwable {
    //Validate a few values from response        
    Assert.assertEquals(name, countriesclass.getcList().get(index).name);
    Assert.assertEquals(capital, countriesclass.getcList().get(index).capital);
    Assert.assertEquals(population, countriesclass.getcList().get(index).population);
}
}

And code for Countries is

package Fixtures;

import Models.CountriesData;
import com.jayway.restassured.response.Response;
import gherkin.deps.com.google.gson.Gson;
import gherkin.deps.com.google.gson.reflect.TypeToken;
import org.json.JSONArray;

import java.lang.reflect.Type; 
import java.util.ArrayList;
import java.util.List;

import static com.jayway.restassured.RestAssured.get;

public class Countries {

private static String url;
private static int count;
private static int sCode;
private static List<CountriesData> cList;


public void GetCountries() throws Exception
{
    try        {
        url = "http://restcountries.eu/rest/v1/all";

        // make get request to fetch json response from restcountries
        Response resp = get(url);

        //Fetching response in JSON as a string then convert to JSON Array
        JSONArray jsonResponse = new JSONArray(resp.asString());

        count = jsonResponse.length(); // how many items in the array
        sCode = resp.statusCode();  // status code of 200

        //create new arraylist to match CountriesData
        List<CountriesData> cDataList = new ArrayList<CountriesData>();

        Gson gson = new Gson();
        Type listType = new TypeToken<List<CountriesData>>() {}.getType();

        cDataList = gson.fromJson(jsonResponse.toString(), listType);

        cList = cDataList;

    }
    catch (Exception e)
    {
        System.out.println("There is an error connecting to the API: " + e);
        e.getStackTrace();
    }
}

//getters to return ('get) the values
public int getsCode() {
    return sCode;
}

public int getCount() {
    return count;
}

public List<CountriesData> getcList()    {
    return cList;
}

}

Upvotes: 1

Views: 769

Answers (1)

Mate Mrše
Mate Mrše

Reputation: 8394

When creating a new step definition file, IntelliJ by default proposes file path of \IdeaProjects\RestAPI\src\main\resources\stepmethods.

Your step definition folder is \IdeaProjects\RestAPI\src\test\java\Steps. Make sure cucumber isn't looking in the wrong place.

Upvotes: 1

Related Questions