Ошибка в шаговом определении огурца (JAVA)

Новичок в Java, но достаточно хорошо осведомлен о огурцах.

Вот как выглядят мои этапы функций: @api_test Feature: Название вашей функции. Я хочу использовать этот шаблон для моего файла функций.

Сценарий: Показать блог

Учитывая, что я получаю доступ к URL ресурса "/comments? Id=2"

Когда я получаю результаты

Тогда код статуса должен быть 200

И должно иметь поле "id", содержащее значение "2"

И это должно иметь поле "электронная почта", содержащее значение "Jayne_Kuhic@sydney.com"


При запуске функционального теста я получаю следующую ошибку:

java.lang.Error: Unresolved compilation problems: 
wc cannot be resolved
httpStatus cannot be resolved or is not a field
HttpStatusCode cannot be resolved to a variable
WebException cannot be resolved to a type
httpStatus cannot be resolved or is not a field
HttpWebResponse cannot be resolved to a type
HttpWebResponse cannot be resolved to a type
httpStatus cannot be resolved or is not a field
HttpStatusCode cannot be resolved to a variable
Assert cannot be resolved
response cannot be resolved or is not a field
JObject cannot be resolved to a type
JToken cannot be resolved

Вот как выглядит мой код:

package stepDefinition;

import java.io.*;
import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When; 

import org.json.*;
import org.junit.Assert.*;
 
public class RestTestSteps {

   private String url;
   private String content;
   private WebClient wc = new WebClient();
   JObject response;
   HttpStatusCode httpStatus;

 

 @Given("^I access the resource url \"([^\"]*)\"$")
 public void i_access_the_resource_url(String resourceUrl) throws Throwable {
     // Write code here that turns the phrase above into concrete actions
  this.url = "http://jsonplaceholder.typicode.com" + resourceUrl;
 }

 @When("^I retrieve the results$")
 public void i_retrieve_the_results() throws Throwable {
     // Write code here that turns the phrase above into concrete actions
  try
     {
       this.content = wc.DownloadString(url);
       this.httpStatus = HttpStatusCode.OK;
     }
     catch (WebException we)
     {
       this.httpStatus = ((HttpWebResponse)we.Response).StatusCode;
     }
     if (this.httpStatus.Equals(HttpStatusCode.OK))
     {
     Assert.IsNotNullOrEmpty(this.content);
     this.response = (JObject)JToken.Parse(this.content);
     }
     
 }

 @Then("^The status code should be (\\d+)$")
 public void the_status_code_should_be(int statusCode) throws Throwable {
     // Write code here that turns the phrase above into concrete actions
  
  Assert.AreEqual(statusCode, (int)this.httpStatus);
  
 }

 @Then("^It should have the field \"([^\"]*)\" containing the value \"([^\"]*)\"$")
 public void it_should_have_the_field_containing_the_value(String arg1, String arg2) throws Throwable {
     // Write code here that turns the phrase above into concrete actions
  
      if (response != null)
      {
        JValue val = (JValue)this.response.GetValue(field);
        string valStr = val.Value().Trim();
        Assert.IsNotNull(valStr);
        Assert.AreEqual(valStr, value.Trim());
      }
  
 }

}

Не уверен, что я делаю не так здесь...

1 ответ

Мне кажется, что вы пропускаете импорт. Я вижу импорт огурцов, но я думаю, что вам нужно импортировать другие классы, которые вы используете. Если вы находитесь в IDE, например, eclipse, это должно помочь вам добавить необходимый импорт.

Кроме того, вы неправильно импортировали утверждения. Те должны быть импортированы как статические.

import static org.junit.Assert.*;

Другие вопросы по тегам