Maven 测试和单位测试先容

打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

一、测试先容






二、单位测试

1)先容



2)快速入门

添加依赖
  1. <dependencies>
  2.        <!-- junit依赖 -->
  3.        <dependency>
  4.            <groupId>org.junit.jupiter</groupId>
  5.            <artifactId>junit-jupiter</artifactId>
  6.            <version>5.9.1</version>
  7.        </dependency>
  8. </dependencies>
复制代码

UserService
  1. package com.project;
  2. import java.time.LocalDate;
  3. import java.time.Period;
  4. import java.time.format.DateTimeFormatter;
  5. public class UserService {
  6.    /**
  7.     * 给定一个身份证号, 计算出该用户的年龄
  8.     * @param idCard 身份证号
  9.     */
  10.    public Integer getAge(String idCard){
  11.        if (idCard == null || idCard.length() != 18) {
  12.            throw new IllegalArgumentException("无效的身份证号码");
  13.        }
  14.        String birthday = idCard.substring(6, 14);
  15.        LocalDate parse = LocalDate.parse(birthday, DateTimeFormatter.ofPattern("yyyyMMdd"));
  16.        return Period.between(parse, LocalDate.now()).getYears();
  17.    }
  18.    /**
  19.     * 给定一个身份证号, 计算出该用户的性别
  20.     * @param idCard 身份证号
  21.     */
  22.    public String getGender(String idCard){
  23.        if (idCard == null || idCard.length() != 18) {
  24.            throw new IllegalArgumentException("无效的身份证号码");
  25.        }
  26.        return Integer.parseInt(idCard.substring(16,17)) % 2 == 1 ? "男" : "女";
  27.    }
  28. }
复制代码

UserServiceTest
  1. package com.project;
  2. import org.junit.jupiter.api.Assertions;
  3. import org.junit.jupiter.api.Test;
  4. //测试类
  5. public class UserServiceTest {
  6.    @Test
  7.    public void testGetAge(){
  8.        UserService userService = new UserService();
  9.        Integer age = userService.getAge("100000200010011011");
  10.        System.out.println(age);
  11.    }
  12.    @Test
  13.    public void testGetName(){
  14.        UserService userService = new UserService();
  15.        String gender = userService.getGender("100000200010011011");
  16.        System.out.println(gender);
  17.    }
  18.    
  19.        // 断言可以判断业务逻辑是否正确
  20.    @Test
  21.    public void testGenderWithAssert(){
  22.        UserService userService = new UserService();
  23.        String gender = userService.getGender("100000200010011011");
  24.        // 断言
  25.        Assertions.assertEquals("男", gender,"性别获取有问题");
  26.    }
  27.    @Test
  28.    public void testGenderWithAssert2(){
  29.        UserService userService = new UserService();
  30.        String gender = userService.getGender("100000200010011011");
  31.        // 断言如果有错误抛出异常
  32.        Assertions.assertThrows(IllegalArgumentException.class, ()->{
  33.            userService.getGender("100000200010011011");
  34.        });
  35.    }
  36. }
复制代码
 

3)断言



  1.  
复制代码

上述方法形参中的最后一个参数 msg ,表示错误提示信息,可以不指定(有对应的重载方法)

4)常见注解




5)单位测试-企业开发规范



1、判断测试方法的覆盖率




2、只判断某个类之中的覆盖率




3、AI天生单位测试

IDea安装通义灵码AI插件

点击标志后,点击单位测试


  1. package com.project;
  2. import org.junit.jupiter.api.*;
  3. import org.junit.jupiter.params.ParameterizedTest;
  4. import org.junit.jupiter.params.provider.ValueSource;
  5. import static org.junit.jupiter.api.Assertions.*;
  6. public class UserServiceAiTest {
  7.    private UserService userService;
  8.    @BeforeEach // 在每个测试方法执行前执行
  9.    public void setUp() {
  10.        userService = new UserService();
  11.    }
  12.    @Test
  13.    public void getGender_ValidMaleIdCard_ReturnsMale() {
  14.        String gender = userService.getGender("100000200010011011");
  15.        assertEquals("男", gender, "性别获取错误,应为男性");
  16.    }
  17.    @Test
  18.    public void getGender_ValidFemaleIdCard_ReturnsFemale() {
  19.        String gender = userService.getGender("100000200010011022");
  20.        assertEquals("女", gender, "性别获取错误,应为女性");
  21.    }
  22.    @Test
  23.    public void getGender_NullIdCard_ThrowsException() {
  24.        assertThrows(IllegalArgumentException.class, () -> {
  25.            userService.getGender(null);
  26.        }, "无效的身份证号码");
  27.    }
  28.    @Test
  29.    public void getGender_InvalidLengthIdCard_ThrowsException() {
  30.        assertThrows(IllegalArgumentException.class, () -> {
  31.            userService.getGender("10000020001001101");
  32.        }, "无效的身份证号码");
  33.    }
  34.    @ParameterizedTest
  35.    @ValueSource(strings = {"100000200010011011", "100000200010011031", "100000200010011051"})
  36.    public void getGender_MultipleMaleIdCards_ReturnsMale(String idCard) {
  37.        String gender = userService.getGender(idCard);
  38.        assertEquals("男", gender, "性别获取错误,应为男性");
  39.    }
  40.    @ParameterizedTest
  41.    @ValueSource(strings = {"100000200010011022", "100000200010011042", "100000200010011062"})
  42.    public void getGender_MultipleFemaleIdCards_ReturnsFemale(String idCard) {
  43.        String gender = userService.getGender(idCard);
  44.        assertEquals("女", gender, "性别获取错误,应为女性");
  45.    }
  46. }
复制代码

6)生命周期中的test

所有命名规范的test都会运行


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表