解決Spring boot 整合Junit遇到的坑
這是我在使用springboot整合Junit的時候遇到的坑
1.在pom.xml中添加junit環(huán)境的依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
2.在src/test/java下建立測試類
例:
@RunWith(value = SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={Demo.class}) // **注意:啟動類為自己編寫的(這是個坑)**
public class serviceTest {
@Autowired
private serviceImpl serviceimpl;
@Test
public void testAdd() {
this.serviceimpl.add();
}
}
3.自己編寫的啟動類
@SpringBootApplication
public class Demo {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Demo.class);
// 這個是關閉springboot啟動時候的圖標可以不設置
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
}
說明:
@RunWith:啟動器 SpringJUnit4ClassRunner.class:讓 junit 與 spring 環(huán)境進行整合
@SpringBootTest(classes={App.class})
1:當前類為 springBoot 的測試類
2:加載 SpringBoot 啟動類(啟動類為自己編寫的啟動類(這是個坑))。啟動SpringBoot
SpringBoot 整合Junit測試注入Bean失敗
java.lang.IllegalStateException: Failed to load ApplicationContext
問題描述
我是在springboot整合測試的時候報錯的。運行就是報各種bean找不到。
版本:springboot-1.5.12 + junit4.12
這個問題卡了半天才解決。從網上搜了若干個博客都試了,基本上都沒有用。
什么加@WebAppConfiguration這個注解啊,加那個注解的,全沒用。
下面是我的測試類
11111
解決過程
我仔細觀察了一下啟動類,因為這個@SpringBootTest我是設置的啟動類的。才發(fā)現原來注入的這些找不到的bean,實際上都是啟動類當中使用依賴注入的對象。
以下是我的啟動類

由此我推斷,雖然springboot自帶了掃描包(默認掃描規(guī)則就是啟動類以上的子包),但是他可能是遵循java的由上而下執(zhí)行代碼規(guī)律,因為他畢竟是整合測試,他和直接從啟動類啟動項目是不一樣的概念。在他要依賴注入這個對象的時候,而實際上這個對象并沒有放到容器當中,這時候就會產生注入不成功。
最終在啟動類添加了一個@ComponentScan(basePackages = {“com.xjgx”})掃描全包。成功解決!
在配置類上添加 @ComponentScan 注解。該注解默認會掃描該類所在的包下所有的配置類,相當于之前的 context:component-scan。
總結
springboot整合junit測試方法,實際上就這兩個注解就可以了。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = EhrApplication.class)
public class EhrApplicationTest {
@Autowired
HealthExamReSerivice healthExamReSerivice;
@Test
public void contextLoads() {
}
}
假如啟動類使用到了依賴注入對象,這個時候需要在啟動類上添加掃描包。
@ComponentScan(basePackages = {"com.xjgx"})
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java編程實現服務器端支持斷點續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實現服務器端支持斷點續(xù)傳的方法,涉及Java文件傳輸的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
java基礎之初始化ArrayList時直接賦值的4種方式總結
ArrayList是Java中的一個類,它是Java集合框架中的一部分,用于實現動態(tài)數組,下面這篇文章主要給大家介紹了關于java基礎之初始化ArrayList時直接賦值的4種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07
微服務如何通過feign.RequestInterceptor傳遞參數
這篇文章主要介紹了微服務如何通過feign.RequestInterceptor傳遞參數,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
MyBatis中的collection兩種使用方法及效率比較
collection主要是應對表關系是一對多的情況,本文主要介紹了MyBatis中的collection兩種使用方法及效率比較,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
解析SpringBoot @EnableAutoConfiguration的使用
這篇文章主要介紹了解析SpringBoot @EnableAutoConfiguration的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09

