如何写SpringBoot test

基本注解

@RunWith(SpringRunner.class) 用于指定使用 SpringRunner来运行test。直接使用这个注解,或者继承使用了这个注解的父类,有相同的效果。

@SpringBootTest 用于指定当前测试基于 SpringBoot TestContext Framework 进行,其中,可以使用 classes注解参数指定 启动类。

@TestConfiguration用于注解测试的config类,可以在  SpringBootTest类的@import注解中导入,导入后,即可autowrite config类中的bean。

典型用法

当指定了SpringBootTest的webEnvironment为 RANDOM_PORT或者 DEFINED_PORT 时,可以 autowire 一个 TestRestTemplate bean用于基于web server暴露的接口进行测试。

在测试类的某个成员上增加注解 @MockBean,那么并不会真正去实例化这个bean,只需要在测试或者 setup方法里对这个 bean做好 mock即可,例如:given(this.helloService.getRemoteVal()).willReturn("远程调用结果")。

使用 @TestPropertySource来设置测试时的系统属性:@TestPropertySource(properties = {"lastName=abc", "bar=uvw"})

也可以对单独定义的Aspect进行测试(直接看参考中的链接即可)。

可以在classpath中自定义 sql-error-codes.xml来覆盖本来的jdbc错误定义,并且在 SqlErrorCodes bean中注入 customTranslations bean,用于在收到指定错误码的时候,抛出自定义类型的异常(参看极客时间视频)。

思考

SpringBoot测试框架是很强大的东西,如果要在SpringBoot的环境下使用TDD还是要好好了解下。在不了解框架的情况下,写代码的时候也要思考:1. 怎么测试我的代码,比如controller/aspect/service等;2. SpringBoot有没有提供什么好的机制可以测,试着搜一下,学一下。

参考

https://blog.csdn.net/liubenlong007/article/details/85398181

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容