【Java】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...
回答
兄弟,你这源码里没有前端项目啊
以上是 【Java】springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null 的全部内容, 来源链接: utcz.com/a/87946.html