如果使用了Assert.assertnotnull 的方法的話,有可能是斷言失敗
這個錯誤出現,在找不到別的原因的時候,基本可以斷定是jar包版本不兼容的問題
- 首先檢查spring-test jar包的版本號,因爲這個jar包有可能是系統引用的,版本不兼容
- 然後檢查spring 的其餘包的版本號是否一致
- 然後檢查引用的集成的特殊的包
ContextConfiguration 的使用配置默認servlet處理需要servletcontext
產生這種狀況的根本原因
- 執行了@EnableWebMvc,這個就是最直接的原因
- 根本原因:啓動WebMvc 需要servletcontext(底層的東西以後會在想下面進行補充)
很多人感覺自己引用的類裏面沒有@EnableWebMvc啊!
下面說一下我的經驗:
一般來說我們需要引用的是配置的 config 文件,config文件一般來說都會掃描一些別的包,引入各種東西,甚至有一些小夥伴在掃描的時候根據很多教材的版本,直接掃描 classpath 根目錄,這種情況也是存在的,這種情況就說明你的 mvc 的配置文件也通過掃描,這就說明 mvc 中的@enableMebMvc 得到了有效的引入執行。
下面就說一說解決方案吧!
一般網上有兩種解決方案:
- 第一種方案:@contextConfiguration中不要含有@EnableWebMvc
- 第二種方案:在測試類中加入@WebApplicationContext註解來配置Servlet環境。
當我還是小萌新的時候,大佬解釋到這一步我還是一臉懵逼。
怎麼不含有@EnableWebMvc 啊,刪了?
@ComponentScan 的過濾方法
我們通過屬性的設置,過濾掉我們不需要掃描的包
@ComponentScan(basePackages = {"****"},
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})
excludeFilers屬性是設置過濾文件的。
未完待續