#java #eclipse #automated-tests #cucumber
Вопрос:
Мой сценарий файла функций таков:
When Recipe4 is added to the recipe book
И соответствующий шаг-это :
@When("^(.*) is added to the recipe book$")
public void addRecipeTest(Recipe recipe) throws RecipeException {
//Set up
recipe = new Recipe();
recipe.setName("Hot Chocolate");
recipe.setAmtChocolate("4");
recipe.setAmtCoffee("0");
recipe.setAmtMilk("1");
recipe.setAmtSugar("1");
recipe.setPrice("65");
assertEquals(true,coffeeMaker.addRecipe(recipe));
assertEquals(coffeeMakerMain.getMode(),Mode.WAITING);
System.out.println("Recipe is added");
}
Я пытаюсь понять, смогу ли я заставить свой код принимать регулярное выражение в качестве объекта класса (Рецепт), но я получаю эту ошибку:
cucumber.runtime.CucumberException: Don't know how to convert "Recipe4" into edu.ncsu.csc326.coffeemaker.Recipe.
Может кто-нибудь, пожалуйста, сказать мне, что я делаю не так?
Ответ №1:
Вот как я преобразую строку в pojo
When I add user by passing <userInfo> to pojo class from scenario outline
Examples:
|userInfo|
|TestFirstName,TestLastName|
Конвертер это
@ParameterType(".*?")
public addUserPojo defineStringToPojo(String adduser) {
List<String> usr = Arrays.asList(adduser.split(","));
return new addUserPojo(usr.get(0),usr.get(1));
}
определение шага таково
@When("I add user by passing {defineStringToPojo} to pojo class from scenario outline")
public void AddUserWithPOJOScOut( addUserPojo adduser) throws MalformedURLException, InterruptedException {
System.out.println("firstname..." adduser.getFirstName());
System.out.println("LastName..." adduser.getLastName());
}
пожо это
public class addUserPojo {
private String FirstName;
private String LastName;
public addUserPojo(String fname, String lname){
this.FirstName = fname;
this.LastName=lname;
}
public String getFirstName() {
return FirstName;
}
public String getLastName() {
return LastName;
}
}
Поскольку вы не используете схему сценария , вам не нужно этого делать split
, просто используйте строку, и она должна работать