sil*_*ver 4 java datatable cucumber cucumber-jvm
我在我的pom.xml
DataTables中从Cucumber-JVM 2.4.0更新到3.0.2,开始抛出此异常:
io.cucumber.datatable.UndefinedDataTableTypeException:无法将DataTable转换为List <jcucumberng.steps.pojos.Income>.请为类jcucumberng.steps.pojos注册一个DataTableType和一个TableEntryTransformer或TableRowTransformer.Income
我把所有的进口都改成了
import io.cucumber.datatable.DataTable;
Run Code Online (Sandbox Code Playgroud)
我做了一个mvn clean install
并且编译成功,但更新后涉及DataTables的步骤不再有效.
当前代码:
// Feature
When I Enter My Regular Income Sources
| name | amount | frequency |
| Salary | 25000 | every 2 weeks |
// Stepdef
@When("^I Enter My Regular Income Sources$")
public void I_Enter_My_Regular_Income_Sources(DataTable dataTable) throws Throwable {
List<Income> incomes = dataTable.asList(Income.class);
// More code
}
// Custom type
public class Income {
private String name = null;
private String amount = null;
private String frequency = null;
public Income(String name, String amount, String frequency) {
this.name = name;
this.amount = amount;
this.frequency = frequency;
}
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
有没有一种在Cucumber-JVM v3.xx中使用DataTables的新方法?
它已经彻底改造了.XStream已被删除,因此早期的代码将无法正常工作.
您需要为数据表和参数转换添加逻辑.请参阅这些 - https://github.com/cucumber/cucumber/tree/master/datatable和https://github.com/cucumber/cucumber/tree/master/cucumber-expressions.将类代码放在glue选项中定义的包内.
public class Configurer implements TypeRegistryConfigurer {
@Override
public void configureTypeRegistry(TypeRegistry registry) {
registry.defineDataTableType(new DataTableType(Income.class, new TableEntryTransformer<Income>() {
@Override
public Income transform(Map<String, String> entry) {
return new Income(entry.get("name"),entry.get("amount"),entry.get("frequency"));
}
}));
}
@Override
public Locale locale() {
return Locale.ENGLISH;
}
}
Run Code Online (Sandbox Code Playgroud)
更新进口......并非所有都是必需的,保持相关的内容
import cucumber.api.TypeRegistry;
import cucumber.api.TypeRegistryConfigurer;
import io.cucumber.cucumberexpressions.ParameterType;
import io.cucumber.datatable.DataTable;
import io.cucumber.datatable.DataTableType;
import io.cucumber.datatable.TableCellTransformer;
import io.cucumber.datatable.TableEntryTransformer;
import io.cucumber.datatable.TableRowTransformer;
import io.cucumber.datatable.TableTransformer;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6055 次 |
最近记录: |