断言模型对象属性

时间:2012-11-22 08:17:51

标签: java spring testing junit

我在Spring控制器测试中有这个测试代码

Student student = studentService.getByNumber(767001);
    student.setCourseRights(courseRightService.getCourseRights(student));
    model.addAttribute("student", student);


    Student s = (Student) model.asMap().get("student"); 

我怎样才能掌握学生属性来断言他们?

    Assert.assertEquals(1, rights.size());   

List<GrantedCourseRight> rights = (List<GrantedCourseRight>) model.asMap().get("student.courseRights");

无效,allthought student.courseRight变量显示在jsp页面上。我是否必须单独将列表放在模型上?

1 个答案:

答案 0 :(得分:0)

Spring Test项目提供了一整套功能,允许您在Junit中测试Spring应用程序。基本上,您希望在运行Junit测试之前建立应用程序上下文,这将允许您使用依赖注入来注入服务的bean。

为了建立这种支持,我们使用几个Spring注释来注释我们的测试类。

<强> MyUnitTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@Transactional
public class SkillRepositoryTest {

    @Autowired
    SkillRepository repository;

    @Test
    public void findOneTest(){
        Skill skill = repository.findOne(1);
        assertNotNull(skill);
        assertEquals("Java", skill.getName());
    }
}

运行测试时,Spring会在同一目录中查找名为MyUnitTest-context.xml的Spring配置文件。在第一次尝试查找应用程序上下文时,它只是将-context.xml后缀为您的测试类名称。 @ContextConfiguration批注还包含一个可用于定位应用程序上下文的元素。