本文主要是介绍SpringBootTest测试框架一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了方便开发,对数据进行mock处理,形成文件,只修改文件内容达到mock指定数据的目的
1、定义测试模式
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface TestModel {TestModelEnum value() default TestModelEnum.LOCAL_PRIOR;String[] mockMethodNames() default {};
}public enum TestModelEnum {/*** 读取本地数据,若无则抛异常*/LOCAL,REMOTE,/*** 本地优先,若本地无mock数据则调用远端并保存到本地*/LOCAL_PRIOR,
}
注入拦截器
public class TestBean {public static final String mockMethods = "mockMethods";// feign拦截器,为了mock feign返回值@Beanpublic Feign.Builder feignBuilder() {return Feign.builder().invocationHandlerFactory((target, dispatch) -> new FeignResultInvocationHandler(target, dispatch));}// sql拦截器,为了mock 查询sql返回值@Beanpublic SqlResultInterceptor sqlResultInterceptor() {return new SqlResultInterceptor();}
}
启动测试父类
StartApplication 为springboot的启动类,可自定义测试启动类也可直接复用项目启动类
@SpringBootTest(classes = {StartApplication.class, TestBean.class})
public abstract class AbstractBasicTest {public final Logger logger = LoggerFactory.getLogger(getClass());// 方法启动时初始化执行方法,可指定db等@Beforepublic void before() {logger.info("before ==================================init datasource====");}// 方法结束时执行方法,清除变量@Afterpublic void tearDown() {// 清理环境变量,恢复测试环境System.clearProperty("classPath");System.clearProperty("classMethodName");System.clearProperty("className");System.clearProperty("testModel");System.clearProperty(TestBean.mockMethods);}// 每个测试方法执行前初始化方法,赋值变量值@BeforeEachpublic void initService(TestInfo testInfo) throws Exception {Method method = testInfo.getTestMethod().get();String methodName = method.getName();String className = testInfo.getTestClass().get
这篇关于SpringBootTest测试框架一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!