java as转换,java-Cucumber-JVM 3-使用asMap()将DataTable转换为单...

在Cucumber-JVM的3.x.x版本中,自动将两列数据表转换为单个对象的功能已被移除。要手动实现这一功能,可以通过定义数据表类型和使用数据表转换器来完成。在给定的代码示例中,创建了一个`User`类并定义了步骤定义以将数据表映射到`User`对象。然而,在运行时遇到了`CucumberException`,表明在转换过程中出现了问题。错误可能源于数据类型不匹配或其他步骤定义错误。
摘要由CSDN通过智能技术生成

在cucumber-jvm 3.x.x中,我想将只有两列的数据表转换为单个对象.此功能在2.x.x中曾经是自动的,但此后已随新的主要版本删除.

码:

// Feature

Scenario: Scan Barcode

Given I Am At The Login Page

When I Log In As Valid User

| group | gpao |

| username | svgpao1 |

| password | REDACTED |

// Stepdef

@When("I Log In As Valid User")

public void I_Log_In_As_Valid_User(User user) throws Throwable {

Selenium.enterText(driver, user.getUsername(), "username");

Selenium.enterText(driver, user.getPassword(), "password");

Selenium.clickElement(driver, "sign.in");

LOGGER.debug("User Group=" + user.getGroup());

}

// Configurer

registry.defineDataTableType(new DataTableType(User.class, new TableTransformer() {

@Override

public User transform(DataTable dataTable) throws Throwable {

Map map = dataTable.asMap(String.class, String.class);

return new User(map);

}

}));

// User - constructor

public User(Map map) {

this.group = map.get("group");

this.username = map.get("username");

this.password = map.get("password");

}

堆栈跟踪:

cucumber.runtime.CucumberException: Could not convert arguments for step [I Log In As Valid User] defined at 'jcucumberng.project.stepdefs.EnterPacketDetailsSteps.I_Log_In_As_Valid_User(User) in file:/Z:/workspace/java/jcucumberng-framework/target/test-classes/'.

The details are in the stacktrace below.

at cucumber.runtime.PickleStepDefinitionMatch.couldNotConvertArguments(PickleStepDefinitionMatch.java:69)

at cucumber.runtime.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:46)

at cucumber.runner.TestStep.executeStep(TestStep.java:55)

at cucumber.runner.TestStep.run(TestStep.java:42)

at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:53)

at cucumber.runner.TestCase.run(TestCase.java:47)

at cucumber.runner.Runner.runPickle(Runner.java:44)

at cucumber.runtime.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:140)

at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)

at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:73)

at cucumber.api.junit.Cucumber.runChild(Cucumber.java:98)

at cucumber.api.junit.Cucumber.runChild(Cucumber.java:55)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at cucumber.api.junit.Cucumber$1.evaluate(Cucumber.java:107)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)

at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)

at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)

at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)

at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:383)

at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:344)

at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)

at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:417)

Caused by: io.cucumber.datatable.CucumberDataTableException: 'jcucumberng.project.domain.User' could not transform

| group | gpao |

| username | svgpao1 |

| password | REDACTED |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值