栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot进行controller单元测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot进行controller单元测试

        单元测试在正规项目开发过程中是不可或缺的,像sonar之类的工具可以对项目代码的测试覆盖率都可以统计出来,从测试代码覆盖率上就可以从侧面反应出代码整体运行可能出问题的概率(不是一定),所以大型公司项目对单元测试覆盖率都有明确的要求。

        作为现在微服务开发基础的springboot,有必要针对这个框架的单元测试进行必要的探讨,尤其是controller接口的单元测试。springboot针对单元测试提供了很多辅助注解,了解了这些注解就可以轻松的使用这些特性进行微服务的单元测试。

        本文仅针对controller接口侧面的单元测试进行阐述,首先看下@WebMvcTest这个注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@documented
@Inherited
@BootstrapWith(WebMvcTestContextBootstrapper.class)
@ExtendWith(SpringExtension.class)
@OverrideAutoConfiguration(enabled = false)
@TypeExcludeFilters(WebMvcTypeExcludeFilter.class)
@AutoConfigureCache
@AutoConfigureWebMvc
@AutoConfigureMockMvc
@importAutoConfiguration
public @interface WebMvcTest {

	
	String[] properties() default {};

	
	@AliasFor("controllers")
	Class[] value() default {};

	
	@AliasFor("value")
	Class[] controllers() default {};

	
	boolean useDefaultFilters() default true;

	
	Filter[] includeFilters() default {};

	
	Filter[] excludeFilters() default {};

	
	@AliasFor(annotation = importAutoConfiguration.class, attribute = "exclude")
	Class[] excludeAutoConfiguration() default {};

}
1、@WebMvcTest这个注解跟@SpringBootTest这个注解是不兼容的,从上面@WebMvcTest注解的定义来看,​​​​​​​@WebMvcTest这个注解支持指定controller的接口测试,这样就可以减少不必要组件的加载时间。

2、@WebMvcTest注解默认扫描 @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, Filter, WebMvcConfigurer and HandlerMethodArgumentResolver这些组件,但是不会扫描 @Component, @Service or @Repository等组件,所以如果单独使用@WebMvcTest进行controller接口进行单元测试时,一般还要与@MockBean注解协同使用,下面给出一种用法:

@MockBean
private RemoteService remoteService;
@Autowired
private Reverser reverser;
@Test
void exampleTest() {
// 模拟RemoteService服务someCall接口调用返回值
given(this.remoteService.someCall()).willReturn("mock");
String reverse = reverser.reverseSomeCall();
assertThat(reverse).isEqualTo("kcom");
}

3、如果想使用数据库实际值进行测试,同时测试Service的相关接口流程,也可以使用@SpringBootTest+@AutoConfigureMockMvc注解的配合方式来完成。

总结,本文介绍了两种方式:

1、通过@WebMvcTest与@MockBean(Mock controller里面定义的Service接口)注解

2、通过@SpringBootTest与@AutoConfigureMockMvc注解实现

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/275450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号