使用Spring运行JUnit测试时的空服务

时间:2016-04-25 17:25:13

标签: spring testing junit spring-security autowired

我正在为Spring Controller开发一个JUnit测试,Controller调用了一堆服务。我的JUnit测试代码如上:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebApplicationConfiguration.class, DatabaseConfiguration.class, ServiceConfiguration.class})
@WebAppConfiguration 
    public class ProcessFileControllerTest {

        private MockMvc mockMvc;


        @Test
        public void getPageTest() throws Exception{
            final ProcessFileController controller = new ProcessFileController();
            SecurityHelperUtility.setupSecurityContext("user", "pass", "ROLE_ADMIN");
            mockMvc = standaloneSetup(controller).build();

            mockMvc.perform(get(URI.create("/processFile.html")).sessionAttr("freeTrialEmailAddress", "")).andExpect(view().name("processFile"));
        }

当我运行JUnit测试时,当我调用NullPointerExcelption的特定代码行时,我得到一个ProcessFileController.java

final Company company = companyService.getCompanyByUser(userName);

我可以看到ServiceNull

在我的ProcessFileController.java Service被声明为:

@Autowired private CompanyService companyService;

有任何线索吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您正在使用new关键字创建控制器。它应该是spring的一个Spring托管bean来注入它的依赖项。使用@Autowired

@Autowired
ProcessFileController controller;