问题描述
我正在使用 Cucumber-Java 以放心、平静和 Jackson 将列表传递给 POJO 类 我从黄瓜依赖转向了宁静黄瓜依赖。 我使用 Jackson 从 Gherkin 上的 List 移动到不同的 Pojo 类 DTO CLass,但系统在尝试转换为 DTO 类时生成错误。 我正在使用 Eclipse 和 Java 8 依赖项:
<properties>
<serenity.version>2.0.76</serenity.version>
<serenity.maven.version>2.0.76</serenity.maven.version>
<serenity.cucumber.version>1.0.21</serenity.cucumber.version>
<cucumber.version>4.2.0</cucumber.version>
<parallel.tests>4</parallel.tests>
<tags></tags>
</properties>
<dependencies>
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>0.15</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<!-- - To use Cucumber 4,exclude the old Cucumber 2 cucumber-core dependency
from the serenity-core dependency - and include the Cucumber 4 cucumber-java
and cucumber-junit dependencies. -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>datatable-matchers</artifactId>
<version>3.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber4</artifactId>
<version>${serenity.cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-rest-assured</artifactId>
<version>${serenity.version}</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.2.2.jre8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.18.Final</version>
</dependency>
</dependencies>
功能:
Scenario Outline: Add member
And The following organization admin with the company
| Admin | NameCompany | Website |
| <Admin> | <NameCompany> | <Website> |
Examples:
| Admin | NameCompany | Website |
| [email protected] | comp | ex.com |
步骤定义:
@And("^The following organization admin with the company$")
public void the_following_organization_admin_with_the_company(List<CompanyAdmins> lstOrganizationAccountAdmin)
throws Throwable {
}
DTO:
public class CompanyAdmins {
String admin;
String nameCompany;
String website;
public String getAdmin() {
return admin;
}
public void setAdmin(String admin) {
this.admin = admin;
}
public String getNameCompany() {
return nameCompany;
}
public void setNameCompany(String nameCompany) {
this.nameCompany = nameCompany;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
}
我在工作之前将依赖项迁移到 Serenity 错误:
cucumber.runtime.CucumberException: Could not convert arguments for step [^The following organization admin with the company$] defined at ' file:/target/test-classes/'.
It appears you did not register a data table type. The details are in the stacktrace below.
at cucumber.runner.PickleStepDeFinitionMatch.registerTypeInConfiguration(PickleStepDeFinitionMatch.java:59)
at cucumber.runner.PickleStepDeFinitionMatch.runStep(PickleStepDeFinitionMatch.java:44)
at cucumber.runner.TestStep.executeStep(TestStep.java:63)
at cucumber.runner.TestStep.run(TestStep.java:49)
at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)
at cucumber.runner.TestCase.run(TestCase.java:44)
at cucumber.runner.Runner.runPickle(Runner.java:40)
at cucumber.runtime.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:146)
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 net.serenitybdd.cucumber.CucumberWithSerenity.runchild(CucumberWithSerenity.java:193)
at net.serenitybdd.cucumber.CucumberWithSerenity.runchild(CucumberWithSerenity.java:64)
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 net.serenitybdd.cucumber.CucumberWithSerenity$1.evaluate(CucumberWithSerenity.java:202)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: io.cucumber.datatable.UndefinedDataTableTypeException: Can't convert DataTable to List<.CompanyAdmins>.
Please review these problems:
- There was no table entry or table row transformer registered for dto.CompanyAdmins.
Please consider registering a table entry or row transformer.
- There was no default table entry transformer registered to transform dto.CompanyAdmins.
Please consider registering a default table entry transformer.
Note: Usually solving one is enough
at io.cucumber.datatable.UndefinedDataTableTypeException.listNoConverterDefined(UndefinedDataTableTypeException.java:110)
at io.cucumber.datatable.DataTableTypeRegistryTableConverter.toList(DataTableTypeRegistryTableConverter.java:136)
at io.cucumber.datatable.DataTableTypeRegistryTableConverter.convert(DataTableTypeRegistryTableConverter.java:102)
at io.cucumber.datatable.DataTable.convert(DataTable.java:360)
at io.cucumber.stepexpression.StepExpressionFactory$3.transform(StepExpressionFactory.java:73)
at io.cucumber.stepexpression.DataTableArgument.getValue(DataTableArgument.java:19)
at cucumber.runner.PickleStepDeFinitionMatch.runStep(PickleStepDeFinitionMatch.java:41)
... 31 more
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)