java_66666
2018-09-26 09:10springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null
5问题描述
项目中运用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条回答
为你推荐
- dubbo 消费者连接zookeeper的时候为什么会创建了一个提供者
- spring
- java
- tomcat
- 3个回答
- 调用dubbo调用其他工程的服务接口 , 打上@Autowired注解启动时报下面的错 ,求大神们帮忙?
- spring
- dubbo
- bean
- 3个回答
- dubbo发布服务失败的问题
- dubbo
- dubbo-demo-provider
- 发布
- eclipse
- 4个回答
- dubbo-admin启动时连接zookeeper失败
- dubbo
- zookeeper
- java
- 2个回答
- 在gradle项目中添加springboot支持,报日志冲突错误,求解释原因,跪谢
- spring
- gradle
- java
- log4j
- 1个回答
换一换