SpringBoot整合JUnit单元测试

目录

      • 编写单元测试
      • 使用说明

 

编写单元测试

1、依赖
是以Spring Initializr创建springboot项目时,默认自带了junit依赖。如果不使用Spring Initializr,可以手动添加依赖

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-testartifactId>
    <scope>testscope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintagegroupId>
            <artifactId>junit-vintage-engineartifactId>
        exclusion>
    exclusions>
dependency>

junit-vintage-engine是使用老版本junit所需的依赖,不需要,使用排除,当然留着也行。

 

2、编写测试类

类名、方法名一般是在原类名、方法名后面加Test。

以测试dao.UserMapper类为例,新建测试类dao.UserMapperTest


@RunWith(SpringRunner.class)
@SpringBootTest
// @SpringBootTest(classes = {MallApplication.class} )  //指定源码的引导类,数组{ },只有一个引导类时可以缺省{ },如果只有1个引导类、且该引导类就是当前打开项目的引导类,可以缺省参数
// @WebAppConfiguration   //如果要测试的类包含web内容,需要用此注解模拟ServletContext
public class UserMapperTest {
    @Autowired  //注入要测试的类的实例
    private UserMapper userMapper;

    @BeforeClass  //在测试这个类之前执行,常用于初始化静态成员变量
    public static void BeforeClass(){

    }

    @AfterClass  //在测试这个类之后执行
    public static void AfterClass(){

    }

    @Before  //每个测试方法执行之前都会执行此方法,常用于初始化实例的成员变量
    public void before(){

    }

    @After  //每个测试方法执行完毕后都会执行此方法
    public void after(){

    }

    @Test  //测试方法
    public void findUserByIdTest(){
        User user = userMapper.findUserById(1);
        // 断言,期待返回的、实际返回的,如果相等,就认为测试通过
        Assert.assertEquals(new User(1,"chy",20),user);

        // 重载方法,第一个指定未通过测试时显示的信息
        // Assert.assertEquals("返回的User对象与预期不符,未通过测试",user,new User(1,"chy",20));

        // Assert 断言,提供了很多静态方法来判断结果
    }

    @Ignore  //测试这个类时会忽略|跳过此方法。@Ignore("bug尚未调好")  可注明原因
    public void updateUserTest(){
        //.....
    }

}

  • 指定的引导类是源码的引导类,因为需要注入源码中的bean,要把源码跑起来
  • 不需要把源码中的文件复制到测试中,直接写测试类即可

 

使用说明

1、每个测试类上都要写@RunWith、@SpringBootTest,很麻烦,可以封装为一个类,测试类都继承该类

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestBase {

}

 
2、打包测试
一个测试类一个测试类地去点击运行,很麻烦,可以把测试类打包到一个类中,运行该类即可

@RunWith(Suite.class)
@Suite.SuiteClasses({UserMapperTest.class,GooodsMapperTest.class})  //数组中写要运行的测试类
public class TestSuits {

}

你可能感兴趣的:(#,SpringBoot)