使用Hamcrest进行Spring MVC测试:如何计算和测试模型中对象的属性数量/大小

问题描述 投票:3回答:1

对于Spring MVC Test(与Java Hamcrest一起工作):

测试必要的场景渲染一个带有Model对象的jsp文件,该对象只包含Person类的实例我有以下(工作正常):

.andExpect(model().size(1))
.andExpect(model().attributeExists("persona"))
.andExpect(model().errorCount(0))
.andExpect(model().hasNoErrors())

.andExpect(model().attribute("persona", notNullValue()))
.andExpect(model().attribute("persona", isA(Persona.class)))

.andExpect(model().attribute("persona", hasProperty("id", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("id", is(persona.getId()))))
.andExpect(model().attribute("persona", hasProperty("nombre", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("nombre", is(persona.getNombre()))))
.andExpect(model().attribute("persona", hasProperty("apellido", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("apellido", is(persona.getApellido()))))
.andExpect(model().attribute("persona", hasProperty("fecha", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("fecha", is(persona.getFecha()))));

我想知道是否可能以及如何计算java对象的属性/属性数,在本例中为Person类。

Person类有新字段时,我需要这个,即:ageheight。因此,测试方法应该不能让我更新count数字并添加

.andExpect(model().attribute("persona", hasProperty("age", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("age", is(persona.getAge()))))
.andExpect(model().attribute("persona", hasProperty("height", notNullValue())))
.andExpect(model().attribute("persona", hasProperty("height", is(persona.getHeight()))));

类似于json的东西

.andExpect(jsonPath("$").exists())
.andExpect(jsonPath("$.*", hasSize(is(4))))
spring spring-test hamcrest spring-test-mvc
1个回答
0
投票
int attrCount = model().getClass().getDeclaredFields().length;
assertThat(attrCount, equalTo(10));
© www.soinside.com 2019 - 2024. All rights reserved.