SpringBoot 單元測試(一)SpringBootTest
阿新 • • 發佈:2019-01-01
SpringBootTest
-
描述:
該註解是用到類名上,表示自動啟動載入類或指定某個或多個載入啟動類,預設會載入當前module下的啟動類。而啟動類(如下)
@SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } }
的
@SpringBootApplication
組合了多個註解,如@componentScan
@SpringBootConfiguration
、@EnableAutoConfiguration
。這些註解自動開啟了自動掃描、依賴注入、自動配置等功能,而且main裡的方法又載入了監聽器、過濾器、攔截器等功能,具體檢視SpringApplication.run方法的原始碼。 -
樣例:
/** * SpringBootTestDemo * * @author orjrs * @date 2018-10-06 19:51 */ @RunWith(SpringRunner.class) //@SpringBootTest // 1 @SpringBootTest(classes = TestApplication.class) // 2 //@SpringBootTest(classes={TestApplication.class,XXX.class}) // 3 public class SpringBootTestDemo { // 1. 測試類會自動載入啟動類,預設module下的啟動類 // 2. 可以指定具體的啟動類,且可以多個(3) // 4. SpringBoot 2.0+版本後,預設生產啟動測試類, // 可以直接extends TestApplicationTests,這樣就不用家@RunWith和@SpringBo0tTest註解 }
2.註解原始碼:
import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor; import org.springframework.test.context.BootstrapWith; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @BootstrapWith(SpringBootTestContextBootstrapper.class) public @interface SpringBootTest { @AliasFor("properties") String[] value() default {}; @AliasFor("value") String[] properties() default {}; Class<?>[] classes() default {}; SpringBootTest.WebEnvironment webEnvironment() default SpringBootTest.WebEnvironment.MOCK; public static enum WebEnvironment { MOCK(false), RANDOM_PORT(true), DEFINED_PORT(true), NONE(false); private final boolean embedded; private WebEnvironment(boolean embedded) { this.embedded = embedded; } public boolean isEmbedded() { return this.embedded; } } }