Unsatisfied dependency expressed through constructor argument with index 6 of type [javax.servlet.Se

it2022-05-05  92

Spring单元测试问题:

Spring版本4.1.6

junit版本:4.12

问题根源

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'documentationPluginsBootstrapper' defined in URL [jar:file:/F:/Specialty/Maven/HzyRepository/io/springfox/springfox-spring-web/2.7.0/springfox-spring-web-2.7.0.jar!/springfox/documentation/spring/web/plugins/DocumentationPluginsBootstrapper.class]: Unsatisfied dependency expressed through constructor argument with index 6 of type [javax.servlet.ServletContext]: : No qualifying bean of type [javax.servlet.ServletContext] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.servlet.ServletContext] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)     at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1139)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125)     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)     at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109)     at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261)     at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68)     at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86)     ... 24 more

很明显是[javax.servlet.ServletContext]的问题,即没有Web容器

解决办法当然是配置Web容器咯,添加注解

@WebAppConfiguration

完整代码:

package com.hzy.problemType; import com.hzy.dao.ProblemTypeDOMapper; import com.hzy.data.ProblemTypeDO; import com.hzy.data.ProblemTypeDOExample; import com.hzy.service.ProblemTypeService; import junit.framework.TestCase; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import java.util.Date; import java.util.List; /** * @author huangzhaoyang * @version 1.0 * @classname ProblemTypeMapperTest * @description 题型dao接口测试类 * @date 2019/7/15 15:16 */ @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations={"classpath:applicationContext.xml"}) public class ProblemTypeMapperTest extends TestCase { @Autowired ProblemTypeDOMapper problemTypeDOMapper; @Autowired ProblemTypeService poblemTypeService; @Test public void testSaveProblemType() { ProblemTypeDO ptDO = new ProblemTypeDO(); ptDO.setProblemTypeId(null); ptDO.setCreateTime(new Date()); ptDO.setUpdateTime(new Date()); ptDO.setTypeName("Alice"); ptDO.setTypeNumber(4); ptDO.setBoolClose(false); // int evaluateResult = problemTypeDOMapper.insert(ptDO); int evaluateResult = poblemTypeService.saveProblemType(ptDO); int expectedResult = 1; Assert.assertEquals(expectedResult, evaluateResult); } @Test public void testGetProblemTypeByName() { ProblemTypeDOExample example = new ProblemTypeDOExample(); ProblemTypeDOExample.Criteria criteria = example.createCriteria(); criteria.andTypeNameEqualTo("填空题"); List<ProblemTypeDO> ptDOs = problemTypeDOMapper.selectByExample(example); int evaluateResult = ptDOs.size(); int expectedResult = 2; Assert.assertEquals(expectedResult, evaluateResult); } @Test public void listProblemTypes() { List<ProblemTypeDO> ptDOs = problemTypeDOMapper.selectByExample(null); for (ProblemTypeDO ptDO : ptDOs) { System.out.println(ptDO.getUpdateTime()); } } @Test public void TestGetProblemTypeByName() { ProblemTypeDO ptDO = problemTypeDOMapper.getProblemTypeByName("Jack"); System.out.println(ptDO.getTypeName()); } }

参考来源:

使用junit测试springMVC项目提示ServletContext找不到定义错误


最新回复(0)