Spring集成测试&将字段设置为控制器

时间:2016-02-22 08:14:05

标签: java spring integration-testing jhipster spring-test

我正在尝试创建我的第一个集成测试,从jhipster项目中激励自己。

在我的设置中,我使用了那种代码:

    CampaignController campaignController = new CampaignController();
    ReflectionTestUtils.setField(campaignController, "securityService", securityService);
    ReflectionTestUtils.setField(campaignController, "campaignService", campaignService);
    ReflectionTestUtils.setField(campaignController, "messageService", messageService);

    MockMvc restMvcCampaignController = MockMvcBuilders.standaloneSetup(campaignController).setMessageConverters(TestUtil.getCustomJsonMessageConverter()).build();
    RestAssuredMockMvc.mockMvc(restMvcCampaignController);

服务是自动装配的课程。 我想知道“ReflectionTestUtils.setField”是一个很好的做法,还是还有其他更好的东西我可以使用?

谢谢

1 个答案:

答案 0 :(得分:0)

这不是一个好习惯。而不是不可能设置依赖项(除了反射之外),通过构造函数注入依赖项。例如

@Controller
public class Controller {
    private CampaignService campaignService;

    @Autowired
    public Controller(CampaignService campaignService, MessageService messageService) {
         //bind fields
    }
}

现在,您可以轻松地从测试中实例化控制器。