嗨,我对Maven完全陌生,我的Java知识很低,我的编程在其他方面很好,但我现在对这个多模Maven构建的大小感到不知所措,我正努力工作。
我正在尝试安装Maven构建SDK并在运行MVN测试时收到此错误:
Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.194 sec <<< FAILURE!
testWriteWithMap(eu.sdk.util.JsonWriterTest) Time elapsed: 0.181 sec <<< FAILURE!
junit.framework.ComparisonFailure: null expected:<{"[b":12,"c":123,"a":"test1"]}> but was:<{"[a":"test1","b":12,"c":123]}>
at junit.framework.Assert.assertEquals(Assert.java:81)
at junit.framework.Assert.assertEquals(Assert.java:87)
at junit.framework.Assert$assertEquals$0.callStatic(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:157)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:169)
at eu.digient.sdk.util.JsonWriterTest.testWriteWithMap(JsonWriterTest.groovy:28)
testConvert2JsonStrWithMap(eu.sdk.util.JsonWriterTest) Time elapsed: 0.001 sec <<< FAILURE!
junit.framework.ComparisonFailure: null expected:<{"[b":12,"c":123,"a":"test1"]}> but was:<{"[a":"test1","b":12,"c":123]}>
at junit.framework.Assert.assertEquals(Assert.java:81)
at junit.framework.Assert.assertEquals(Assert.java:87)
at junit.framework.Assert$assertEquals$0.callStatic(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:157)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:169)
at eu.digient.sdk.util.JsonWriterTest.testConvert2JsonStrWithMap(JsonWriterTest.groovy:85)
我已将错误追踪到测试文件,并在此处找到了测试函数:
@Test
public void testWriteWithMap() {
MockHttpServletResponse response = new MockHttpServletResponse();
Map<String, Object> jsonBean = new HashMap<String, Object>();
jsonBean.put("a", "test1");
jsonBean.put("b", 12);
jsonBean.put("c", new BigDecimal(123));
try {
JsonWriter.write(response, jsonBean);
assertEquals("{\"b\":12,\"c\":123,\"a\":\"test1\"}", response.getContentAsString());
} catch (HttpMessageNotWritableException e) {
fail("fail");
} catch (IOException e) {
fail("fail");
}
}
为什么这会失败,我的假设是这应该是从曾经为我的新客户端处理服务器项目的代码继承此代码的正确测试。我真的不明白这个测试的目标是什么?有人可以开导我吗?
答案 0 :(得分:0)
junit.framework.ComparisonFailure: null expected:<{"[b":12,"c":123,"a":"test1"]}> but was:<{"[a":"test1","b":12,"c":123]}>
这表明预期和实际之间的平等失败。失败的原因是assertEquals
- 它寻找完全匹配。
这应该是从曾经为我的新客户端处理服务器项目后继承此代码的正确测试。
您确定它是在代码的父版本中执行的吗?根据{{1}}参数,default设置为false,值不会排序,也取决于Sorted input
。输入订单得以维持。
不是一直硬编码输出参数的最佳做法。可以使用定义的方法here
修改强>
Sort Keys
。@JsonPropertyOrder
api,则可以使用Serializers来定义输入/输出顺序。 Source。GSON
,则可以选择维护已排序的输入顺序。 Source 然而,强烈建议不要依赖按键的顺序,不像有非常强烈的理由这样做。使用CloverETL
JsonObject比排序和操作订单更为可取。