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集成的时候加载顺序会导致这个空指针异常,但是我的项目正常启动是可以访问的,就是在测试用例的时候回出现空,不知道什么原因.
是哪里的配置没有配置对吗?
项目源代码:https://github.com/konghangha...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
兄弟,你这源码里没有前端项目啊