【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为空
【Java】springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null

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

是哪里的配置没有配置对吗?
项目源代码:https://github.com/konghangha...

回答

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

兄弟,你这源码里没有前端项目啊

以上是 【Java】springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null 的全部内容, 来源链接: utcz.com/a/87946.html

回到顶部