当前位置: 首页 > web >正文

Maven

1-阿里云镜像

    <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>

2-Maven库

https://mvnrepository.com/
Maven Central Repository Search
Index of /groups/public
http://people.apache.org/repo/m2-snapshot-repository/
http://people.apache.org/repo/m2-incubating-repository/

3-JUnit

断言方法

描述

Assertions.assertEquals(Object exp, Object act, String msg)

检查两个值是否相等,不相等就报错。

Assertions.assertNotEquals(Object unexp, Object act, String msg)

检查两个值是否不相等,相等就报错。

Assertions.assertNull(Object act, String msg)

检查对象是否为null,不为null,就报错

Assertions.assertNotNull(Object act, String msg)

检查对象是否不为null,为null,就报错

Assertions.assertTrue(boolean condition, String msg)

检查条件是否为true,不为true,就报错

Assertions.assertFalse(boolean condition, String msg)

检查条件是否为false,不为false,就报错

Assertions. assertThrows(Class expType, Executable exec, String msg)

检查程序运行抛出的异常,是否符合预期。

注解

说明

备注

@Test 

测试类中的方法用它修饰才能成为测试方法,才能启动执行

单元测试

@ParameterizedTest

参数化测试的注解 (可以让单个测试运行多次,每次运行时仅参数不同)

用了该注解,就不需要@Test注解了

@ValueSource

参数化测试的参数来源,赋予测试方法参数

与参数化测试注解配合使用

@DisplayName

指定测试类、测试方法显示的名称 (默认为类名、方法名)

@BeforeEach

用来修饰一个实例方法,该方法会在每一个测试方法执行之前执行一次。

初始化资源(准备工作)

@AfterEach

用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次。

释放资源(清理工作)

@BeforeAll

用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次

初始化资源(准备工作)

@AfterAll

用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次

释放资源(清理工作)

4-案例


import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;/*** 测试类*/
@DisplayName("用户信息测试类")
public class UserServiceTest {/*@BeforeAll //在所有的单元测试方法运行之前, 运行一次public static void beforeAll(){System.out.println("before All");}@AfterAll //在所有的单元测试方法运行之后, 运行一次public static void afterAll(){System.out.println("after All");}@BeforeEach //在每一个单元测试方法运行之前, 都会运行一次public void beforeEach(){System.out.println("before Each");}@AfterEach //在每一个单元测试方法运行之后, 都会运行一次public void afterEach(){System.out.println("after Each");}*/@Testpublic void testGetAge(){UserService userService = new UserService();Integer age = userService.getAge("100000200010011011");System.out.println(age);}@Testpublic void testGetGender(){UserService userService = new UserService();String gender = userService.getGender("100000200010011011");System.out.println(gender);}/*** 断言*/@Testpublic void testGenderWithAssert(){UserService userService = new UserService();String gender = userService.getGender("100000200010011011");//断言//Assertions.assertEquals("男", gender);Assertions.assertEquals("男", gender, "性别获取错误有问题");}/*** 断言*/@Testpublic void testGenderWithAssert2(){UserService userService = new UserService();//断言Assertions.assertThrows(IllegalArgumentException.class, () -> {userService.getGender(null);});}/*** 参数化测试*/@DisplayName("测试用户性别")@ParameterizedTest@ValueSource(strings = {"100000200010011011","100000200010011031","100000200010011051"})public void testGetGender2(String idCard){UserService userService = new UserService();String gender = userService.getGender(idCard);//断言Assertions.assertEquals("男", gender);}
}
package com.itheima;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.*;public class UserServiceAiTest {private UserService userService;@BeforeEach // 在每个测试方法执行前执行public void setUp() {userService = new UserService();}@Testpublic void getGender_ValidMaleIdCard_ReturnsMale() {String gender = userService.getGender("100000200010011011");assertEquals("男", gender, "性别获取错误,应为男性");}@Testpublic void getGender_ValidFemaleIdCard_ReturnsFemale() {String gender = userService.getGender("100000200010011022");assertEquals("女", gender, "性别获取错误,应为女性");}@Testpublic void getGender_NullIdCard_ThrowsException() {assertThrows(IllegalArgumentException.class, () -> {userService.getGender(null);}, "无效的身份证号码");}@Testpublic void getGender_InvalidLengthIdCard_ThrowsException() {assertThrows(IllegalArgumentException.class, () -> {userService.getGender("10000020001001101");}, "无效的身份证号码");}@ParameterizedTest@ValueSource(strings = {"100000200010011011", "100000200010011031", "100000200010011051"})public void getGender_MultipleMaleIdCards_ReturnsMale(String idCard) {String gender = userService.getGender(idCard);assertEquals("男", gender, "性别获取错误,应为男性");}@ParameterizedTest@ValueSource(strings = {"100000200010011022", "100000200010011042", "100000200010011062"})public void getGender_MultipleFemaleIdCards_ReturnsFemale(String idCard) {String gender = userService.getGender(idCard);assertEquals("女", gender, "性别获取错误,应为女性");}
}

http://www.xdnf.cn/news/4711.html

相关文章:

  • AI CUBE 使用指南 目标检测格式范例 AI cube 报错数据集不合规范,请清洗数据集
  • 在Hugging Face网站像Github一样克隆repository到本地的具体步骤
  • 【数据结构】——链表OJ(下)
  • 丝路传说手游:职业选择与高难度BOSS突破指南
  • 视频编解码学习8之视频历史
  • hprof文件,java虚拟机堆转储文件,Dump文件
  • 使用adb设置wifi相关
  • AI Agent开发之门:微软官方课程全面解析
  • R1-Searcher:用强化学习解锁大语言模型检索新能力!
  • 计算机体系架构-----设计模式:状态模式(从程序员加班问题切入)
  • SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类
  • 只出现一次的数字(暴力、哈希查重、异或运算)
  • Python基于Django和MySQL实现突发公共卫生事件舆情分析系统(有大屏功能)
  • 【AI论文】FlexiAct:在异构场景中实现灵活的动作控制
  • 线程池的核心参数和线程创建方式,线程和进程
  • rust程序静态编译的两种方法总结
  • 手势、鼠标滑动实现界面切换
  • 介绍Unity中的Dictionary
  • npm包之serve-favicon
  • flow-matching 之学习matcha-tts cosyvoice
  • 集团云解决方案:集团企业IT基础架构的降本增效利器
  • RAG技术在测试用例生成中的应用
  • FAST角点检测算法原理附C++代码实现
  • HarmonyOS NEXT之深度解析ArkUI自定义组件:从基础实现到生产级登录组件的进化之路
  • 复盘20250508
  • CSS:元素显示模式与背景
  • 【Java ee 初阶】文件IO和操作(下)
  • 系统架构-面向服务架构(SOA)
  • 【嵌入式开发-SPI】
  • 常见的提示词攻击方法 和防御手段——提示词注入(Prompt Injection)攻击解析