【问题标题】:Null Service while running JUnit test with Spring使用 Spring 运行 JUnit 测试时的空服务
【发布时间】:2016-04-25 17:25:13
【问题描述】:

我正在将 JUnit 测试开发成 Spring Controller,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 测试时,当我调用我的 ProcessFileController.java 的这一特定代码行时,我得到一个 NullPointerExcelption

final Company company = companyService.getCompanyByUser(userName);

我可以看到ServiceNull

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

@Autowired private CompanyService companyService;

有什么线索吗?提前致谢。

【问题讨论】:

    标签: spring testing junit spring-security autowired


    【解决方案1】:

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

    @Autowired
    ProcessFileController controller;
    

    【讨论】:

    • 工作就像一个魅力。谢谢。
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2016-03-13
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多