Java @Spring引导应用程序中的ModelAttribute

Java @Spring引导应用程序中的ModelAttribute,java,spring,spring-mvc,spring-boot,junit,Java,Spring,Spring Mvc,Spring Boot,Junit,我有一个Spring启动应用程序(嵌入式Tomcat、Thymeleaf模板…) 这里是我的一个控制器: @Controller @RequestMapping("/company") public class CompanyController { @RequestMapping(value = { "/list" }, method = { RequestMethod.GET }) public String companyList(Company company, Mod

我有一个Spring启动应用程序(嵌入式Tomcat、Thymeleaf模板…) 这里是我的一个控制器:

@Controller
@RequestMapping("/company")
public class CompanyController {

    @RequestMapping(value = { "/list" }, method = { RequestMethod.GET })
    public String companyList(Company company, ModelMap model) {
        return serverContextPath + COMPANY_LIST_VIEW_NAME;
    }

    @ModelAttribute("companies")
    public Iterable<Company> companies(){
        return companyService.findAll();
    }
}
@控制器
@请求映射(“/公司”)
公共类公司控制器{
@RequestMapping(值={“/list”},方法={RequestMethod.GET})
公共字符串companyList(公司,模型映射模型){
返回serverContextPath+公司\列表\视图\名称;
}
@模型属性(“公司”)
上市公司(){
return companyService.findAll();
}
}
我创建了这个Junit测试来验证我的控制器是否工作正常

@ContextConfiguration(classes = { MyApplicationConfig.class })
public class CompanyControllerTests {


    private CompanyController controller;

    @Value("${server.contextPath}")
    protected String serverContextPath;

    @Before
    public void setUp() throws Exception {
        controller = new CompanyController();
    }


    @Test
    public void testCompanyList() {

        ExtendedModelMap model = new ExtendedModelMap();
        String viewName = controller.companyList(new Company(), model);
        assertEquals(serverContextPath + CompanyController.COMPANY_LIST_VIEW_NAME, viewName);
        Iterable<Company> companies = (Iterable<Company>) model.get("companies");
        assertNotNull(companies);

    }    
}
@ContextConfiguration(classes={MyApplicationConfig.class})
公共类公司控制器{
私人公司控制器;
@值(${server.contextPath}”)
受保护的字符串serverContextPath;
@以前
public void setUp()引发异常{
控制器=新公司控制器();
}
@试验
public void testCompanyList(){
ExtendedModelMap model=新的ExtendedModelMap();
字符串viewName=controller.companyList(新公司(),模型);
assertEquals(serverContextPath+CompanyController.COMPANY\u LIST\u VIEW\u NAME、viewName);
Iterable Companys=(Iterable)model.get(“公司”);
资产(公司);
}    
}

但是我有一个断言Error
assertNotNull(公司)

您可能需要模拟此调用并获得一些预期结果:

companyService.findAll() 

为了能够在服务之外测试控制器

,为什么要填写?您直接调用的是一个方法,而不是使用Spring MVC基础结构进行测试。MockMvc是测试控制器所需要的。