Ошибка в шаговом определении огурца (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.*;