• Juint-单元测试


    在java se的学习中,我们要测试代码一般都是通过运行main方法来进行。通过Juint单元测试可直接运行测试方法,而不用通过main方法。


    普通Maven项目

    方法使用注解@Test,可以直接运行测试,而不通过main方法(maven项目

    依赖:(一般新建的maven项目都会带有这个依赖)

    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.11version>
        <scope>compilescope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在方法上使用注解@Test。@Test注解只有在方法上有效,只要加了这个注解的方法就可以直接运行。

    若还未导入依赖可以按快捷键Option+Enter,选择导入相应的依赖。会自动添加依赖配置到pom文件中,并且自动下载相应jar包。(Maven项目的pom文件,点这里复习一下)

    若已经导入了依赖,按快捷键Option+Enter后选择导入相应的包,import class。一般导入的包名为:import org.junit.Test;

    方法的左侧会出现一个小三角形按钮。该按钮就是运行按钮。

    测试

    与运行main方法是一样的。绿色就是程序正常运行没有发生错误。

    红色报警,就是程序出了错误。


    SpringBoot项目

    目前流行的有JUnit或TestNG等测试框架。Spring Boot封装了单元测试组件spring-boot-starter-test。

    SpringBoot项目中使用单元(Junit)测试。一般情况下Test文件夹内会有一个测试类,可直接在里边进行单元测试。


    简单测试

    步骤

    一、新建

    新建一个类作为测试类或者选择需要测试的类或方法,然后在对应的类中右击,选择Go To→Test→Create New Test。

    二、注解配置

    • 使用注解@SpringBootTest标记测试类

      • 在类的上面添加@SpringBootTest注解,系统会自动把这段程序加载到Spring Boot容器
    • 使用注解@RunWith(SpringRunner.class)标记测试类(使用IDEA可以不添加)

      • @RunWith(SpringRunner.class)注解是一个测试启动器,可以加载Springboot测试环境。
      • 需要从容器中获取实例(@Autowired自动装配)是需要加上该注解,否则空指针。
    • 使用注解@Test标记测试方法

      • @Test注解表示该方法为单元测试方法。
    • 测试对象可以使用注解@Autowired进行自动装配。



    模拟HTTP请求

    spring-boot-starter-test具备强大的Mock能力,使用@WebMvcTest等注解实现模拟HTTP请求测试。

    @RunWith(SpringRunner.class)
    @WebMvcTest(HelloController.class)
    class HelloControllerTest {
    
        @Autowired
        private MockMvc mockMvc;
    
        @Test
        public void hello() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.post("/hello")   //执行一个请求
                    .contentType(MediaType.APPLICATION_JSON))       //接收的数据类型
                    .andExpect(status().isOk())  //添加执行完成后的断句,请求的状态响应码//是否为200,如果不是则测试不通过
                    .andDo(print()); //添加一个结果处理程序,表示要对结果进行处理,比如此处//使用print()输出整个响应结果信息
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    示例代码说明如下:

    MockMvcRequestBuilders.post(“/hello”):构造一个post请求。

    contentType (MediaType.APPLICATION_JSON)):设置JSON返回编码,避免出现中文乱码的问题。

    andExpect(status().isOk()):执行完成后的断句,请求的状态响应码是否为200,如果不是则测试不通过。

    andDo(print()):添加一个结果处理程序,表示要对结果进行处理,比如此处调用print()输出整个响应结果信息。

    如果接口有登录验证,则需要通过MockHttpSession注入用户登录信息,或者修改登录拦截器取消对单元测试的登录验证。

    注解说明



    笔记摘自:遇见狂神说《Spring Boot从入门到实战》-章为忠

  • 相关阅读:
    【Python 千题 —— 基础篇】学生转学了
    层叠、继承与盒模型
    musescore 构建入门
    【软考系统架构设计师】2022年系统架构师综合知识真题及解析
    如何通过执行SQL为低代码项目提速?
    数据挖掘:支持向量机SVM数学推导
    【每日一题】50. Pow(x, n)
    SylixOS网卡多 IP 配置
    RISC-V架构——物理内存保护机制设置函数(pmp_set)解析
    机器学习的医疗乳腺癌数据的乳腺癌疾病预测
  • 原文地址:https://blog.csdn.net/weixin_44773109/article/details/127684994