java_66666 2018-09-26 09:10 采纳率: 0%
浏览 6384
已结题

springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null

问题描述
项目中运用springboot+dubbo注解方式的配置开发,正常启动项目没有什么问题,但是当我在写单元测试的时候,发现@Reference标注的属性为null,导致调用空指针异常.

相关代码
待测试方法:

 @RestController
@RequestMapping("/api/user")
public class UserController {

    @Reference(version = "${dubbo.service.version}")
    private IUserService userService;

    @PostMapping(value="/login", produces="application/json;charset=UTF-8")
    public JsonApi login(String username, String password) {
        User search = new User();
        search.setUsername(username);
        User user = userService.selectUserBy(search);
        if (StringUtils.isEmpty(user)){
            search.setUsername(null);
            search.setEmail(username);
            user = userService.selectUserBy(search);
        }
        if (StringUtils.isEmpty(user)){
            throw new AuthorizeException(ErrorCode.USER_UNKNOWN_ACCOUNT);
        }
        return JsonApi.isOk()..data(user);
    }
}

测试方法:

 @RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest
public class UserControllerTest {

    private MockMvc mvc;

    @Before
    public void setUp() {
        mvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
    }

    @Test
    public void login() throws Exception {
        RequestBuilder request = post("/api/user/login")
                .contentType(MediaType.APPLICATION_JSON)
                .param("username","test")
                .param("password","123456");
        String rs = mvc.perform(request)
                //.andDo(print())
                .andExpect(status().isOk())
                .andReturn()
                .getResponse()
                .getContentAsString();
        System.out.println(rs);
    }
}

在运行测试用例的时候,发现private IUserService userService为空

图片说明

网上都是说和springMvc集成的时候加载顺序会导致这个空指针异常,但是我的项目正常启动是可以访问的,就是在测试用例的时候回出现空,不知道什么原因.

是哪里的配置没有配置对吗?

  • 写回答

4条回答

  • 郴江 2019-07-01 09:28
    关注

    Dubbo的@Reference注解拿到的一个代理;
    但@Reference生成的代理并不在Spring容器中

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容