解決Spring boot 整合Junit遇到的坑

2022-09-27 08:57:10 字數 1513 閱讀 4416

目錄

org.springframework.bootwww.cppcns.comupid>

&程式設計客棧lt;artifactid>spring-boot-starter-test

例:@runwith(value = springjunit4classrunner.class)

@springboottest(classes=) // **注意:啟動類為自己編寫的(這是個坑)**

public class servicetest

}@springbootapplication

public class demo

}說明:

@runwith:啟動器 springjunit4classrunner.class:讓 junit 與 spring 環境進行整合

@springboottest(classes=)

1:當前類為 springboot 的測試類

2:載入 springboot 啟動類(啟動類為自己編寫的啟動類(這是個坑))。啟動springboot

j**a.lang.illegalstateexception: fa程式設計客棧iled to load applicationcontext

我是在springboot整合測試的時候報錯的。執行就是報各種be程式設計客棧an找不到。

版本:springboot-1.5.12 + junit4.12

這個問題卡了半天才解決。從網上搜了若干個部落格都試了,基本上都沒有用。

什麼加@webappconfiguration這個註解啊,加那個註解的,全沒用。

下面是我的測試類

我仔細觀察了一下啟動類,因為這個@springboottest我是設定的啟動類的。才發現原來注入的這些找不到的bean,實際上都是啟動類當中使用依賴注入的物件。

以下是我的啟動類

由此我推斷,雖然springboot自帶了掃瞄包(預設掃瞄規則就是啟動類以上的子包),但是他可能是遵循j**a的由上而下執行**規律,因為他畢竟是整合測試,他和直接從啟動類啟動專案是不一樣的概念。在他要依賴注入這個物件的時候,而實際上這個物件並沒有放到容器當中,這時候就會產生注入不成功。

最終在啟動類新增了乙個@componentscan(basepackages = )掃瞄全包。成功解決!

在配置類上新增 @componentscan 註解。該註解缺省會掃瞄該類所在的包下所有的配置類,相當於之前的 context:component-scan。

springboot整合junit測試方法,實際上就這兩個註解就可以了。

@runwith(springrunner.class)

@springboottest(classes = ehrapplication.class)

public class ehrapplicationtest

}假如啟動類使用到了依賴注入物件,這個時候需要在啟動類上新增掃瞄包。

@componentscan(basepackages = )

本文標題: 解決spring boot 整合junit遇到的坑

本文位址:

springboot學習十 事物管理 整合jpa

一,事物管理 只需在方法上加 transactional註解 或在類上加 transactional 二 整合jpa 1,pom org.springframework.boot spring boot starter data jpa spring datasource username root...

springboot整合log4j完整配置

廢話不多說了上 首先在pom.xml中過濾boot本身自帶的logging org.springframework.boot spring boot starter web org.springframework.boot spring boot starter logging 並新增log4j o...

Spring boot 快速整合log4j2

首先在前一篇的基礎上引入log4j的jar包,同時spring boot預設是用logback的日誌框架的,所以需要排除logback,不然會出現jar依賴衝突的報錯。org.springframework.boot spring boot starter web org.springframewo...