SpringTest是Spring框架用来做单元测试的工具。使用SpringTest需要结合Junit一起使用。
目录
一、环境准备
1.1 导入jar包
下载jar或使用maven导入依赖包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.9.RELEASE</version>
</dependency>
1.2 编写测试类
一般来说,每一个业务类都应该对应一个测试类。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfig.class})
public class UserSeriviceTest {
@Test
public void test(){
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = (UserService) ac.getBean("userService");
userService.work();
}
}
二、相关注解
@RunWith:指定Junit运行器,它负责执行测试类。
@ContextConfiguration:指定Spring配置文件的位置;
三、零配置(无配置文件)
- 使用@Configuration注解,指定Spring容器从当前类中加载读取配置信息即可实现零配置;
- 使用@ComponentScan注解,指定spring容器初始化时候要扫描的包;
@Configuration
@ComponentScan(basePackages = {"com.spring"})
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {UserSeriviceTest.class})
public class UserSeriviceTest{
@Test
public void test(){
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = (UserService) ac.getBean("userService");
userService.work();
}
}
四、常见异常
4.1 org.springframework.util.Assert.notNull(Ljava/lang/Object;Ljava/util/function/Supplier;)V
一般是因为jar冲突,版本不兼容;
例如:
<!--Spring依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- Spring-text -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.9.RELEASE</version>
</dependency>
因为spring-test的版本和Spring的版本不同导致异常,只需要导入版本一致的包即可;
4.2 org.junit.runners.model.InvalidTestClassError: Invalid test class
这个是因为导错Test包了,导入了
import org.junit.jupiter.api.Test
应该是
import org.junit.Test