// Feature
Scenario: Scan Barcode
Given I Am At The Login Page
When I Log In As Valid User
| group | username | password |
| gpao | svgpao1 | **** |
// Stepdef
@When("I Log In As Valid User")
public void I_Log_In_As_Valid_User(DataTable dataTable) throws Throwable {
List<User> users = dataTable.asList(User.class);
User user = users.get(0);
Selenium.enterText(driver, user.getUsername(), "username");
Selenium.enterText(driver, user.getPassword(), "password");
Selenium.clickElement(driver, "sign.in");
LOGGER.debug("User Group=" + user.getGroup());
}
// Configurer
public class DataTableConfigurer implements TypeRegistryConfigurer {
@Override
public Locale locale() {
return Locale.ENGLISH;
}
@Override
public void configureTypeRegistry(TypeRegistry registry) {
registry.defineDataTableType(new DataTableType(User.class, new TableEntryTransformer<User>() {
@Override
public User transform(Map<String, String> entry) {
return new User(entry.get("group"), entry.get("username"), entry.get("password"));
}
}));
}
}
// User
public class User {
private String group = null;
private String username = null;
private String password = null;
public User() {
}
public User(String group, String username, String password) {
this.group = group;
this.username = username;
this.password = password;
}
// Getters and setters
}
Above works, but since I do not really expect any additional rows to the datatable in the feature file, I prefer it to be a User
object instead of List<User>
.