Java io.cucumber.datatable.UndefinedDataableTypeException:Jackson cucumber和Serenity

Java io.cucumber.datatable.UndefinedDataableTypeException:Jackson cucumber和Serenity,java,jackson,cucumber,jackson-databind,cucumber-serenity,Java,Jackson,Cucumber,Jackson Databind,Cucumber Serenity,我使用Cucumber Java和rest assured、serenity和Jackson将列表传递给POJO类 我从黄瓜依赖转移到宁静黄瓜依赖。 我使用Jackson从小黄瓜上的列表移动到不同的Pojo类DTO类,但系统在尝试转换为DTO类时生成错误。 我正在使用Eclipse和Java8 依赖关系: <properties> <serenity.version>2.0.76</serenity.version> <s

我使用Cucumber Java和rest assured、serenity和Jackson将列表传递给POJO类 我从黄瓜依赖转移到宁静黄瓜依赖。 我使用Jackson从小黄瓜上的列表移动到不同的Pojo类DTO类,但系统在尝试转换为DTO类时生成错误。 我正在使用Eclipse和Java8 依赖关系:

<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 |  
| lb@test.com | 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 {
}
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:无法转换在“file:/target/test classes/”中定义的步骤[^a以下组织管理员和公司$]的参数。
您似乎没有注册数据表类型。详情见下面的stacktrace。
位于cucumber.runner.PickleStepDefinitionMatch.registerTypeInConfiguration(PickleStepDefinitionMatch.java:59)
在cumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:44)
位于cucumber.runner.TestStep.executeStep(TestStep.java:63)
运行(TestStep.java:49)
在cumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)中
运行(TestCase.java:44)
位于cumber.runner.runner.runPickle(runner.java:40)
在cucumber.runtime.junit.picklernanders$nostepsdescriptions.run(picklernanders.java:146)中
在cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)中
在cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)中
位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:363)
运行(FeatureRunner.java:73)
位于net.serenitybdd.cucumber.cucumberWithSerentity.runChild(cucumberWithSerentity.java:193)
位于net.serenitybdd.cucumber.cucumberWithSerentity.runChild(cucumberWithSerentity.java:64)
位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
在net.serenitybdd.cucumber.cucumberWherencentity$1.evaluate(cucumberWherencentity.java:202)
位于org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:363)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
原因:io.cucumber.datatable.UndefinedDataableTypeException:无法将datatable转换为列表。
请审查这些问题:
-没有为dto.CompanyAdmins注册的表条目或表行转换器。
请考虑登记表条目或行变压器。
-没有注册用于转换dto.CompanyAdmins的默认表项转换器。
请考虑注册默认表条目转换器。
注:通常解决一个问题就足够了
在io.Cumber.datatable.UndefinedDataableTypeException.listNoConverterDefined(UndefinedDataableTypeException.java:110)
在io.cumber.datatable.DataTableTypeRegistryTableConverter.toList(DataTableTypeRegistryTableConverter.java:136)
在io.cumber.datatable.DataTableTypeRegistryTableConverter.convert(DataTableTypeRegistryTableConverter.java:102)上
在io.cumber.datatable.datatable.convert(datatable.java:360)处
位于io.cumber.stepexpression.StepExpressionFactory$3.transform(StepExpressionFactory.java:73)
位于io.cumber.stepexpression.DataTableArgument.getValue(DataTableArgument.java:19)
在cumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:41)
... 还有31个
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