spring-boot-starter-test有如下幾個庫:
序號 | 庫名的解釋 |
---|---|
1 | JUnit 5:兼容 JUnit 4,Java 應用程序單元測試的事實標准 |
2 | Spring Test 和 SpringBootTest:對Spring Boot應用程序的公共和集成測試支持 |
3 | AssertJ:流式斷言庫 |
4 | Hamcrest:匹配對象庫 |
5 | Mockito:Java 模擬框架 |
6 | JSONassert:JSON 斷言庫 |
7 | JsonPath:JSON XPath |
因此,如果是Springboot項目,無需再重復引入Spring-Test包和Junit包,從Springboot 2.2.X開始版本為junit5。
@SpringBootTest
>:獲取啟動類,加載配置,尋找主配置啟動類(被 @SpringBootApplication 注解的)
@RunWith(SpringRunner.class)
>:讓JUnit運行Spring的測試環境,獲得[Spring環境的上下文]的支持
使用Junit4需要以上兩個注解,junit5僅需@SpringBootTest
2、SpringJUnit4ClassRunner與SpringRunner關系
部分人習慣使用SpringJUnit4ClassRunner,SpringRunner是繼承自這個類的,兩者沒有區別
public final class SpringRunner extends SpringJUnit4ClassRunner {
public SpringRunner(Class<?> clazz) throws InitializationError {
super(clazz);
}
}
3、使用junit5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
依賴排除說明:這個是JUnit5中為了支持使用JUint4所做的一個過度,也就是說,你只需要在你的JUnit4舊項目中添加這個依賴, 就能完美過渡,而不用修改之前代碼。(如果要在大於springboot 2.2.x版本使用junit4,上述的依賴排除刪掉,還需手動引入junit4的jar包因為2.2.x只有junit5依賴)
JUnit5結構:
Junit5 = JUnit Platform + JUnit JUpiter + JUnit Vintage
-
JUnit Platform: 這是Junit提供的平台功能模塊,通過它,其它的測試引擎都可以接入Junit實現接口和執行。
-
JUnit JUpiter:這是JUnit5的核心,是一個基於JUnit Platform的引擎實現,它包含許多豐富的新特性來使得自動化測試更加方便和強大。
-
JUnit Vintage:這個模塊是兼容JUnit3、JUnit4版本的測試引擎,使得舊版本的自動化測試也可以在JUnit5下正常運行。
如果是SpringBoot項目,使用Junit測試僅需Starter即可,2.2.x前為junit4,后為junit5,僅需一個starter依賴,除非要變更2.2.x為junit4,不需要排除j5->j4的依賴且需要引入j4依賴。