JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之JUnit单元测试AI生成单元测试含覆盖率
AI生成代码如下:
- package com.jinhei;
-
- import org.junit.jupiter.api.*;
- import org.junit.jupiter.params.ParameterizedTest;
- import org.junit.jupiter.params.provider.ValueSource;
-
- import static org.junit.jupiter.api.Assertions.assertEquals;
- import static org.junit.jupiter.api.Assertions.assertThrows;
-
- @DisplayName("测试-学生业务操作")
- public class UserServiceTest {
- private UserService userService;
-
- @BeforeEach
- public void setUp() {
- userService = new UserService();
- }
-
- @Test
- @DisplayName("正常输入18位有效身份证号,第17位为奇数,应返回'男'")
- public void testGetGender_OddGenderDigit_ReturnsMale() {
- String idCard = "110002200505091218"; // 第17位是1(奇数)
- String result = userService.getGender(idCard);
- assertEquals("男", result, "性别判断错误");
- }
-
- @Test
- @DisplayName("正常输入18位有效身份证号,第17位为偶数,应返回'女'")
- public void testGetGender_EvenGenderDigit_ReturnsFemale() {
- String idCard = "110002200505091228"; // 第17位是2(偶数)
- String result = userService.getGender(idCard);
- assertEquals("女", result, "性别判断错误");
- }
-
- @Test
- @DisplayName("传入null参数,应抛出IllegalArgumentException")
- public void testGetGender_NullInput_ThrowsException() {
- assertThrows(IllegalArgumentException.class, () -> {
- userService.getGender(null);
- }, "未检测到非法参数异常");
- }
-
- @Test
- @DisplayName("传入空字符串,应抛出IllegalArgumentException")
- public void testGetGender_EmptyInput_ThrowsException() {
- assertThrows(IllegalArgumentException.class, () -> {
- userService.getGender("");
- }, "未检测到非法参数异常");
- }
-
- @Test
- @DisplayName("传入长度不足18位的身份证号,应抛出IllegalArgumentException")
- public void testGetGender_TooShortInput_ThrowsException() {
- assertThrows(IllegalArgumentException.class, () -> {
- userService.getGender("12345678901234567"); // 17位
- }, "未检测到非法参数异常");
- }
-
- @Test
- @DisplayName("传入长度超过18位的身份证号,应抛出IllegalArgumentException")
- public void testGetGender_TooLongInput_ThrowsException() {
- assertThrows(IllegalArgumentException.class, () -> {
- userService.getGender("1234567890123456789"); // 19位
- }, "未检测到非法参数异常");
- }
-
- @ParameterizedTest
- @ValueSource(strings = {
- "110002200505091218", // 奇数
- "110002200001011234", // 奇数
- "11000219901231123X" // 奇数
- })
- @DisplayName("多个合法身份证号,第17位为奇数时,应返回'男'")
- public void testGetGender_MultipleOddInputs_ReturnsMale(String idCard) {
- assertEquals("男", userService.getGender(idCard), "性别判断错误: " + idCard);
- }
-
- @ParameterizedTest
- @ValueSource(strings = {
- "110002200505091228", // 偶数
- "110002200001011244", // 偶数
- "11000219901231122X" // 偶数
- })
- @DisplayName("多个合法身份证号,第17位为偶数时,应返回'女'")
- public void testGetGender_MultipleEvenInputs_ReturnsFemale(String idCard) {
- assertEquals("女", userService.getGender(idCard), "性别判断错误: " + idCard);
- }
- }
复制代码 运行查看覆盖率结果如下:
查看自定义覆盖率对应类或者包:
|