Cucumber - 在我的 TypeRegistryConfigurer class 中找不到 DataTableType.entry
Cucumber - Could not find DataTableType.entry in my TypeRegistryConfigurer class
我目前正在使用 Cucumber,我正在尝试使用 TypeRegistryConfigurer 自动将 dataTable 转换为我的 class。我在我的 TypeRegistryConfiguration 中使用以下代码:
import static java.util.Locale.ENGLISH;
import com.fasterxml.jackson.databind.ObjectMapper;
import my.company.decision.calculator.service.domain.CalculationRequest;
import my.company.decision.calculator.service.domain.CalculationResponse;
import io.cucumber.core.api.TypeRegistry;
import io.cucumber.core.api.TypeRegistryConfigurer;
import io.cucumber.datatable.DataTableType;
import java.util.Locale;
import java.util.Locale;
public class CalculationApiTypeRegistryConfiguration implements TypeRegistryConfigurer {
@Override
public Locale locale() {
return Locale.ENGLISH;
}
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(DataTableType.entry(Example.class));
}
}
但是我收到错误消息:
Cannot find method DataTableType.entry.
我的 gradle 依赖项如下:
compile group: 'io.cucumber', name: 'cucumber-java', version: '5.0.0'
testCompile group: 'io.cucumber', name: 'cucumber-junit', version: '5.0.0'
对此有什么想法吗?
我使用了以下 Cucumber 版本并且有效:
compile group: 'io.cucumber', name: 'cucumber-java', version: '4.8.1'
testCompile group: 'io.cucumber', name: 'cucumber-junit', version: '4.8.1'
Cucumber v5 有一个基于注解的配置,可以让你这样做:
package io.cucumber.examples.java;
import io.cucumber.java.DataTableType;
import java.util.Map;
public class ShoppingSteps {
@DataTableType
public Grocery defineGrocery(Map<String, String> entry) {
return new Grocery(entry.get("name"), Integer.parse(entry.get("price")));
}
您也可以将 entry
传递给像 Jackson 这样的映射器来为您进行转换。
我目前正在使用 Cucumber,我正在尝试使用 TypeRegistryConfigurer 自动将 dataTable 转换为我的 class。我在我的 TypeRegistryConfiguration 中使用以下代码:
import static java.util.Locale.ENGLISH;
import com.fasterxml.jackson.databind.ObjectMapper;
import my.company.decision.calculator.service.domain.CalculationRequest;
import my.company.decision.calculator.service.domain.CalculationResponse;
import io.cucumber.core.api.TypeRegistry;
import io.cucumber.core.api.TypeRegistryConfigurer;
import io.cucumber.datatable.DataTableType;
import java.util.Locale;
import java.util.Locale;
public class CalculationApiTypeRegistryConfiguration implements TypeRegistryConfigurer {
@Override
public Locale locale() {
return Locale.ENGLISH;
}
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(DataTableType.entry(Example.class));
}
}
但是我收到错误消息:
Cannot find method DataTableType.entry.
我的 gradle 依赖项如下:
compile group: 'io.cucumber', name: 'cucumber-java', version: '5.0.0'
testCompile group: 'io.cucumber', name: 'cucumber-junit', version: '5.0.0'
对此有什么想法吗?
我使用了以下 Cucumber 版本并且有效:
compile group: 'io.cucumber', name: 'cucumber-java', version: '4.8.1'
testCompile group: 'io.cucumber', name: 'cucumber-junit', version: '4.8.1'
Cucumber v5 有一个基于注解的配置,可以让你这样做:
package io.cucumber.examples.java;
import io.cucumber.java.DataTableType;
import java.util.Map;
public class ShoppingSteps {
@DataTableType
public Grocery defineGrocery(Map<String, String> entry) {
return new Grocery(entry.get("name"), Integer.parse(entry.get("price")));
}
您也可以将 entry
传递给像 Jackson 这样的映射器来为您进行转换。