Previously in older version of Cucumber we can transform Datatable as per our own object easily but now we need to implement TypeRegistryConfigurer in our code.
Here we will discuss on it.
Step 1:
Create a Employee class as below
public class EmployeeDTO {
private String username;
private String password;
public EmployeeDTO(String username, String password) {
this.username = username;
this.password = password;
}
public String getUserName() {
return username;
}
public void setUserName(String userName) {
this.username = userName;
}
public String getPassword() {
return password;
}
public void setPasword(String password) {
this.password = password;
}
}
Step 2:
Now we need to implemnt TypeRegistryConfigurer as below
import java.util.List;
import java.util.Locale;
import java.util.Map;
import io.cucumber.core.api.TypeRegistry;
import io.cucumber.core.api.TypeRegistryConfigurer;
import io.cucumber.datatable.DataTableType;
import io.cucumber.datatable.TableEntryTransformer;
import io.cucumber.datatable.TableRowTransformer;
import io.cucumber.datatable.TableCellTransformer;
public class EmployeeRegistryConfigurer implements TypeRegistryConfigurer {
@Override
public Locale locale() {
// TODO Auto-generated method stub
return Locale.ENGLISH;
}
//RowTransformer is List of Objects List<EmployeeDTO>
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(new DataTableType(EmployeeDTO.class,new TableRowTransformer<EmployeeDTO>() {
@Override
public EmployeeDTO transform(List<String> row) throws Throwable {
// TODO Auto-generated method stub
return new EmployeeDTO(row.get(0), row.get(1));
}
}));
}
//CellTransformer is List of List of Objects List<List<EmployeeDTO>> employeeDetails
// @Override
// public void configureTypeRegistry(TypeRegistry typeRegistry) {
// typeRegistry.defineDataTableType(new DataTableType(EmployeeDTO.class, new TableCellTransformer<EmployeeDTO>() {
// @Override
// public EmployeeDTO transform(String cell) throws Throwable {
// return new EmployeeDTO(cell, cell);
// }
//
// }));
//EntryTransformer is List of Maps of Keys to Values List<EmployeeDTO>
// @Override
// public void configureTypeRegistry(TypeRegistry registry) {
// registry.defineDataTableType(new DataTableType(EmployeeDTO.class, new TableEntryTransformer<EmployeeDTO>() {
// @Override
// public EmployeeDTO transform(Map<String, String> entry) throws Throwable {
// return new EmployeeDTO(entry.get("username"),entry.get("password"));
// }
// }));
//
// }
}Step 3:
Now we can call this as below:
public class Steps {
@Given("UserName and Password.")
public void username_and_Password() {
System.out.println("Test");
}
@Given("UserName and Password as below.")
public void username_and_Password_as_below(List<EmployeeDTO> employeeDetails) {
System.out.println(employeeDetails.get(0).getUserName());
System.out.println(employeeDetails.get(0).getPassword());
System.out.println(employeeDetails.get(1).getUserName());
System.out.println(employeeDetails.get(1).getPassword());
}
}
Here we will discuss on it.
Step 1:
Create a Employee class as below
public class EmployeeDTO {
private String username;
private String password;
public EmployeeDTO(String username, String password) {
this.username = username;
this.password = password;
}
public String getUserName() {
return username;
}
public void setUserName(String userName) {
this.username = userName;
}
public String getPassword() {
return password;
}
public void setPasword(String password) {
this.password = password;
}
}
Step 2:
Now we need to implemnt TypeRegistryConfigurer as below
import java.util.List;
import java.util.Locale;
import java.util.Map;
import io.cucumber.core.api.TypeRegistry;
import io.cucumber.core.api.TypeRegistryConfigurer;
import io.cucumber.datatable.DataTableType;
import io.cucumber.datatable.TableEntryTransformer;
import io.cucumber.datatable.TableRowTransformer;
import io.cucumber.datatable.TableCellTransformer;
public class EmployeeRegistryConfigurer implements TypeRegistryConfigurer {
@Override
public Locale locale() {
// TODO Auto-generated method stub
return Locale.ENGLISH;
}
//RowTransformer is List of Objects List<EmployeeDTO>
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(new DataTableType(EmployeeDTO.class,new TableRowTransformer<EmployeeDTO>() {
@Override
public EmployeeDTO transform(List<String> row) throws Throwable {
// TODO Auto-generated method stub
return new EmployeeDTO(row.get(0), row.get(1));
}
}));
}
//CellTransformer is List of List of Objects List<List<EmployeeDTO>> employeeDetails
// @Override
// public void configureTypeRegistry(TypeRegistry typeRegistry) {
// typeRegistry.defineDataTableType(new DataTableType(EmployeeDTO.class, new TableCellTransformer<EmployeeDTO>() {
// @Override
// public EmployeeDTO transform(String cell) throws Throwable {
// return new EmployeeDTO(cell, cell);
// }
//
// }));
//EntryTransformer is List of Maps of Keys to Values List<EmployeeDTO>
// @Override
// public void configureTypeRegistry(TypeRegistry registry) {
// registry.defineDataTableType(new DataTableType(EmployeeDTO.class, new TableEntryTransformer<EmployeeDTO>() {
// @Override
// public EmployeeDTO transform(Map<String, String> entry) throws Throwable {
// return new EmployeeDTO(entry.get("username"),entry.get("password"));
// }
// }));
//
// }
}Step 3:
Now we can call this as below:
public class Steps {
@Given("UserName and Password.")
public void username_and_Password() {
System.out.println("Test");
}
@Given("UserName and Password as below.")
public void username_and_Password_as_below(List<EmployeeDTO> employeeDetails) {
System.out.println(employeeDetails.get(0).getUserName());
System.out.println(employeeDetails.get(0).getPassword());
System.out.println(employeeDetails.get(1).getUserName());
System.out.println(employeeDetails.get(1).getPassword());
}
}
No comments:
Post a Comment