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

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容器中

    评论
  • Evan Guo 2020-02-19 15:54
    关注

    我的错误是启动类没加@EnableDubboConfiguration

    评论
  • weixin_42236507 2021-01-22 18:24
    关注

    最后怎么解决的呢,代码报错 ServiceBeanContext.getBean(ServiceBeanContext.java25)   null

    评论
  • qq_38535182 2018-09-26 09:12
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于c语言的学习问题
  • ¥15 activity升级到flowable工作流act_ge_bytearray的草稿json数据复制到act_de_model 的model_editor_json的脚本
  • ¥15 cvi使用CreateThread创建线程时,出现存储空间不足无法处理此命令的错误
  • ¥15 求苹果推信imessage批量推信技术
  • ¥15 ubuntu 22.04 系统盘空间不足。隐藏的docker空间占用?(相关搜索:移动硬盘|管理系统)
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件