基本注解
@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