我正在尝试创建我的第一个集成测试,从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”是一个很好的做法,还是还有其他更好的东西我可以使用?
谢谢
答案 0 :(得分:0)
这不是一个好习惯。而不是不可能设置依赖项(除了反射之外),通过构造函数注入依赖项。例如
@Controller
public class Controller {
private CampaignService campaignService;
@Autowired
public Controller(CampaignService campaignService, MessageService messageService) {
//bind fields
}
}
现在,您可以轻松地从测试中实例化控制器。