【发布时间】:2022-06-12 01:28:47
【问题描述】:
下面是我的功能文件
Scenario Outline: CucumberTest
Given Generate Data Set
"""json
{
"tcIdentifier":"TC1"
}
"""
Examples:
|TESTCASEIDENTIFIER|
|TC1 |
步骤定义如下所示
@Given("Generate Data Set")
public void generateDataSet(DataSetMetaData dataSetMetaData) {
System.out.println(dataSetMetaData);
}
@DocStringType
public DataSetMetaData createTestDataForSorting(String details) throws JsonProcessingException {
return new ObjectMapper().readValue(details, DataSetMetaData.class);
}
Details of the DataSetMetaData
@Getter
@Setter
@ToString
@AllArgsConstructor
@Builder
@NoArgsConstructor
public class DataSetMetaData {
private String tcIdentifier;
}
预期:从要转换为 DataSetMetaData POJO 的 Docstring 的数据绑定
实际:我们遇到了异常 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“tcIdentifier”未标记为可忽略(0 个已知属性:])
来自以前的一些类似的响应-异常-社区建议将字段注释为@JsonProperty-我无法理解的内容-如果变量名称与 JSON 数据键匹配-理想情况下绑定应该有效-对于一些奇怪的原因 - 即使属性存在 - UnrecognizedPropertyException: Unrecognized field "tcIdentifier"
以下是与 Cucumber 和 Jackson 依赖项相关的 maven 坐标
实现组:'io.cucumber',名称:'cucumber-java',版本:'7.3.4 实现组:'net.logstash.logback',名称:'logstash-logback-encoder',版本:'7.2'
如果需要任何进一步的信息,请告诉我
【问题讨论】:
-
你能在没有 Cucumber 的情况下尝试重现这个吗?它似乎没有增加任何问题?
-
你不应该在班级本身上有杰克逊注释吗?还是杰克逊/龙目岛的组合?
-
@M.P.Korstanje - 你在现场 - 我缺乏注意力 - 让我连接到 Cucumber - 它与 Cucumber 无关 - 即使通过杰克逊图书馆进行正常反序列化 - 从 String 到 POJO 是失败
-
@GaëlJ - 我在课堂上没有任何 Jackson 注释 - 但我有 @Builder/@Getter/@NoArgsConstructor/@AllArgsConstructor 的 Lombok 注释
标签: cucumber cucumber-jvm jackson-databind