我有以下简单的jUnit测试:
class MyTest {
static class SingleField {
int rank;
SingleField(int rank) {
this.rank = rank;
}
@Override
public boolean equals(Object o) {
if(!(o instanceof SingleField)) {
return false;
} else {
return ((SingleField) o).rank == rank;
}
}
}
@Test
public void testBasicJacksonParsing() throws JsonProcessingException {
assertEquals(new SingleField(3), new ObjectMapper().readValue("{\"rank\" : 3}", SingleField.class));
}
}
字符串
不幸的是,当运行时,测试抛出一个MismatchedInputException
,其中包含消息:
Cannot construct instance of `com.drfirst.gear.user.context.util.AppUtilTest$SingleField` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (String)"{"rank" : 3}"; line: 1, column: 2]
型
公认的答案here似乎暗示需要一个全参数构造函数。我显然有一个。我也尝试了相同的单元测试,创建了SingleField
public
的构造函数,我还将rank
更改为String
,确保我也将正在解析的String
从"{\"rank\" : 3}"
更新为"{\"rank\" : \"3\"}"
。相同的Exception
抛出。
我做错了什么?
2条答案
按热度按时间hgc7kmma1#
原来我需要
public
setter来处理我的字段。iaqfqrcu2#
我在一个MavenKotlin项目中遇到了同样的问题,通过添加依赖项解决了这个问题:
字符串