如果使用了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属性是设置过滤文件的。
未完待续