今天在使用Spring的测试类进行单元测试的时候,发现IDEA并不能识别这个类,然后查询之后发现自己的spring-test包就没有导入
导入Spring-test架包
因为我是使用的Maven构建项目,就去Maven上查找了对应版本的架包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.4.RELEASE</version>
<scope>test</scope>
</dependency>
导入之后,发现还是不能识别SpringJUnit4ClassRunner这个类,网上查询的资料是说存在空格的问题,但是进行对应的修改之后并没有解决这个问题。
删除< scope>标签
后续查看,在Maven中的依赖中有< scope>标签,但是这个标签导致了项目的不能识别,删除以后,单元测试类正常运行。
//注意,这种方式只能用在JUnit 4.1.2以及更高的版本
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:ApplicationContext.xml")
public class TestSpring {
@Autowired
Category c;
@Test
public void test(){
System.out.println(c.getName());
}
}
原因分析
回到这个问题本身,为什么< scope>标签会导致SpringJUnit4ClassRunner的使用不成功:
这就要说到< scope>的打包作用,这里就不再赘述,可以参考:
https://www.cnblogs.com/tuyang1129/p/10741558.html