Spring框架(二)——SpringTest

SpringTest是Spring框架用来做单元测试的工具。使用SpringTest需要结合Junit一起使用。

目录

  • 一、环境准备
    • 1.1 导入jar包
    • 1.2 编写测试类
  • 二、相关注解
  • 三、零配置(无配置文件)
  • 四、常见异常
    • 4.1 org.springframework.util.Assert.notNull(Ljava/lang/Object;Ljava/util/function/Supplier;)V
    • 4.2 org.junit.runners.model.InvalidTestClassError: Invalid test class

一、环境准备

1.1 导入jar包

下载jar或使用maven导入依赖包

<dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-testartifactId>
      <version>5.0.9.RELEASEversion>
    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配置文件的位置;

三、零配置(无配置文件)

  1. 使用@Configuration注解,指定Spring容器从当前类中加载读取配置信息即可实现零配置;
  2. 使用@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冲突,版本不兼容;
例如:

 
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-contextartifactId>
      <version>4.3.9.RELEASEversion>
    dependency>
    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-testartifactId>
      <version>5.0.9.RELEASEversion>
    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

你可能感兴趣的:(Spring,spring,单元测试)