本本本添哥
奶爸的编程之路,也就一周冷个三天~
专门分享AI大模型/Java微服务/计算机软考/项目管理/个人成长/思维框架/效能工具等相关内容
欢迎关注我的公众号:本本本添哥
展开
-
【项目实战】测试驱动开发(Test-Driven Development,TDD)是一种以测试为先导的软件开发方法,其核心流程遵循“红-绿-重构”循环。
测试驱动开发(Test-Driven Development,TDD)是一种以测试为先导的软件开发方法,其核心流程遵循“红-绿-重构”循环。测试驱动开发(TDD):在编写代码之前先编写测试用例,确保代码的功能和逻辑符合预期。TDD通过测试驱动开发流程,将质量保障前置,显著提升代码可靠性与可维护性,但其成功依赖团队对方法的熟练应用、工具链支持及协作文化。尽管存在学习成本和维护挑战,结合持续重构、分层测试和敏捷实践,TDD仍是现代软件开发中提升工程效能的重要手段。原创 2025-04-22 12:02:42 · 20 阅读 · 0 评论 -
【项目实战】通过JMeter的梯度式压测,去得出可扩展性的性能范围
单节点性能极限:通过逐步加压确定最大TPS和资源瓶颈。多节点扩展能力:验证资源增加与性能提升的比例,结合公式和监控数据判断是否满足线性扩展。优化方向:根据瓶颈分析结果,针对性优化硬件、架构或代码,提升系统的可扩展性边界。原创 2025-03-19 10:14:25 · 67 阅读 · 0 评论 -
【项目实战】通过合理配置`@SpringBootTest`注解来加速单元测试过程
是Spring Boot提供的一个注解,用于标注测试类,表示该类是一个Spring Boot的测试类。它允许测试类中注入Spring容器管理的bean,以便进行单元测试。核心原则:最小化加载范围,避免冗余初始化。适用场景更适合集成测试;单元测试应优先使用切片测试或纯Mock工具(如Mockito)。验证效果:通过日志观察上下文加载时间,确保优化后测试启动速度显著提升。原创 2025-03-19 10:02:24 · 27 阅读 · 0 评论 -
【项目实战】编写Java单元测试的常用技巧总结
通过结合Mock对象、静态模拟和详细断言,可有效覆盖复杂场景(如Excel解析、文件上传),提升测试覆盖率与代码健壮性。模拟文件上传使用模拟文件上传场景,可灵活构造文件名、内容类型和字节数据。例如:支持通过字节数组或输入流初始化文件内容。静态方法与构造方法的模拟使用Mockito的mockStatic模拟工具类的静态方法(如),避免真实IO操作。示例:通过模拟构造函数创建的对象(如),控制其行为。验证方法调用与结果使用断言(如)验证返回结果是否符合预期。原创 2025-03-18 09:58:47 · 39 阅读 · 0 评论 -
【异常】使用Diffblue Cover时遇到的“超出许可证限制”错误Exceeded license limitations: You have exceeded the limit for you
Diffblue Cover的测试生成效率较高,例如可为Java方法自动生成覆盖边缘案例的单元测试,速度比人工快10-100倍。但需注意其社区版功能限制,合理规划测试生成需求。Diffblue建议用户更新至最新版本(如2024.02.02),旧版本可能存在许可证识别或日志记录问题,导致误报限制错误。社区版用户每周最多只能创建100个测试(每周一00:00 UTC自动重置)。若用户此前已接近或达到此限额,当次操作即使仅生成5个测试也会触发限制。社区版仅支持开源项目,而付费版(如团队版)适用于商业软件。原创 2025-03-03 09:47:51 · 68 阅读 · 0 评论 -
【好物推荐】主流 AI 生成单元测试插件与工具
在 IntelliJ IDEA 中,利用 AI 技术生成 Java 单元测试可以通过多种插件和工具实现,通过合理选择工具并优化工作流,AI 单元测试可显著提升开发效率,但需平衡自动化与人工干预,以实现最佳效果。原创 2025-03-03 09:47:39 · 478 阅读 · 0 评论 -
【无标题】Diffblue Cover在尝试为`VehicleLogController`类生成单元测试时,自动扫描并关联了多个服务类
对于Spring项目,Diffblue Cover默认会尝试加载完整的Spring上下文,这可能导致工具扫描到项目中所有相关的Bean。对于复杂项目(如包含数十个服务类的Spring应用),这种策略可能导致测试范围过广。Diffblue Cover的默认行为是为整个项目生成测试套件,而非仅针对单一类。当用户未显式指定范围时,工具会自动扫描所有关联类。相互引用),工具会误认为这些类需要被测试覆盖。)以及这些服务类自身的依赖链。)的依赖关系,包括其注入的服务类(如。,工具会自动将这些服务纳入测试范围。原创 2025-03-03 09:47:27 · 42 阅读 · 0 评论 -
【好物推荐】TestSpark 是一个专为 IntelliJ IDEA 设计的 Java 单元测试插件,旨在简化单元测试的生成和集成过程。
TestSpark 是一个功能强大且灵活的 IntelliJ IDEA 插件,能够显著提高 Java 单元测试的效率和覆盖率。它结合了多种先进的测试生成技术,并提供了直观的用户界面和丰富的功能,适合需要高效单元测试支持的开发者使用。原创 2025-03-03 09:47:13 · 71 阅读 · 0 评论 -
【好物推荐】DiffBlue Cover是一款基于AI的单元测试生成工具,通过分析Java源代码并生成JUnit测试用例来实现自动化测试。
AI生成单元测试可以使用DiffBlue Cover插件来实现。DiffBlue Cover是一款由牛津大学软件验证专家团队开发的工具,专注于为Java代码自动生成单元测试。DiffBlue Cover是一款基于AI的单元测试生成工具,通过分析Java源代码并生成JUnit测试用例来实现自动化测试。DiffBlue Cover是一个高效的工具,能够显著提升Java项目的单元测试覆盖率和开发效率,适合个人和团队使用。原创 2025-02-28 09:55:24 · 159 阅读 · 0 评论 -
【项目实战】Apache JMeter设置线程(用户)数、预热时间(Ramp-Up Period),以及循环次数来实现不同并发用户数的模拟
设定了500个线程。这表示模拟的并发用户数量为500。每个线程都将独立地执行测试脚本中的采样器。:设置为1秒。这个参数指的是所有线程启动完毕所需的时间。也就是说,500个线程将在1秒钟内全部启动。这意味着每秒会有500个线程同时开始运行,即以非常快的速度达到最大并发量。对于这样的高并发瞬间增加,被测试系统可能会面临很大的压力,甚至可能导致不准确的测试结果或系统的不稳定。通常建议将Ramp-UpPeriod设定得足够长,以便更平滑地增加负载,使得测试更加接近真实的用户行为。原创 2025-01-18 22:15:33 · 291 阅读 · 0 评论 -
【项目实战】使用 Mockito 的 `when(...).thenReturn(...)` 来设置模拟行为
Mockito 是一个流行的 Java 框架,用于创建模拟对象(mock objects),这在单元测试中非常有用。通过使用 Mockito,你可以定义方法调用的行为,而无需实现实际的逻辑。是一种常用的方式来设置模拟对象的方法返回值。原创 2025-01-16 14:15:05 · 282 阅读 · 0 评论 -
【项目实战】单元测试`spring-boot-starter-test` 简化了测试环境的搭建过程,让开发者能够更轻松地编写单元测试和集成测试。
是 Spring Boot 框架的一部分简化了测试环境的搭建过程,让开发者能够更轻松地编写单元测试和集成测试。是一个专门为测试Spring Boot应用程序而设计的启动器(starter)集成了多个流行的测试库,包括但不限于JUnit Jupiter、Hamcrest和Mockito。是一个测试模块,包含了执行单元测试和集成测试所需的各种依赖。原创 2025-01-02 19:55:54 · 114 阅读 · 0 评论 -
【项目实战】三种常见的结构覆盖率类型:语句覆盖(Statement Coverage)、分支覆盖(Branch Coverage)和修改条件/判定覆盖(MC/DC)
软件单元测试中的结构覆盖率是一种衡量测试套件质量的指标,它反映了测试用例对源代码执行路径的覆盖程度。以下是三种常见的结构覆盖率类型:语句覆盖(Statement Coverage)、分支覆盖(Branch Coverage)和修改条件/判定覆盖(Modified Condition/Decision Coverage, MC/DC)。这些覆盖率标准常用于确保软件的各个部分都得到了充分的测试,特别是在安全关键型系统中。选择适当的覆盖率标准取决于项目的需求和所处行业的要求。原创 2024-12-25 13:57:22 · 429 阅读 · 0 评论 -
【项目实战】单元测试框架Mockito入门介绍
Mockito,Java单元测试中的mock框架。Mockito,是一个流行的Java单元测试框架。Mockito,提供IDEA插件来辅助生成Mock对象和测试代码。Mockito,通过在执行后校验哪些函数已经被调用,消除了对期望行为的需要,API非常简洁。原创 2024-11-04 22:17:21 · 127 阅读 · 0 评论 -
【项目实战】使用Junit5+PowerMock+Mockito来编写单元测试的小技巧汇总
使用Junit5+PowerMock+Mockito来编写单元测试,要求如下:(1)设置测试数据(Arrange),执行待测方法(Act),然后验证结果(Assert)(2)结果使用Assertions的API进行校验,比如在所有的assertEquals变成为Assertions.assertEquals(3)@Test下面的方法不加public(4)注意导入的方法,都是static(4)改成(5)不使用注解,改成(6)使用TestMe、百度Comate AI工具帮你完成单元测试。原创 2024-09-12 20:36:50 · 676 阅读 · 0 评论 -
【项目实战】单元测试框架PowerMock,基本可以覆盖测试所有普通类的测试,也是运用场景最多的框架
PowerMock,是一个 Java 测试框架。PowerMock,扩展了 JUnit 和 Mockito 的功能。PowerMock,基本可以覆盖测试所有普通类的测试,也是运用场景最多的框架PowerMock,允许开发者对以下内容进行模拟和存根。原创 2024-09-12 20:35:17 · 100 阅读 · 0 评论 -
【异常】使用Mockito单元测试时,提示Cannot instantiate @InjectMocks field named ‘baseMapper‘!,结果是@InjectMocks不适用于接口
既然VehicleMapper是一个接口,你应该使用@Mock来声明它,这样Mockito会在运行时动态地创建一个这个接口的mock对象。(3)@InjectMocks只能用于非接口类型的字段,即它必须是一个可以实例化的类,而不是一个接口。如果试图将@InjectMocks用在一个接口上,Mockito将会尝试创建这个接口的一个实例。(1)@InjectMocks注解主要用于那些你想要测试的对象(通常是类的实例)在例子中,VehicleMapper是一个接口,因此不能直接实例化它。原创 2024-09-05 13:10:48 · 602 阅读 · 0 评论 -
【异常】Mockito提示报错无法解析 ‘BodyBuilder‘ 中的方法 ‘content‘
您提到的错误通常发生在尝试使用 Mockito 框架来模拟某个类中的方法时,但该类或方法并未正确导入或者 Mockito 未能正确识别它的情况。在这种情况下,错误提示“无法解析。的错误,这通常意味着你在尝试使用某个方法或 API 时,该方法并未在你的类路径中可用,或者 Mockito 版本与使用的其他库之间存在不兼容性。如果您能够提供更多具体的信息,比如模拟的上下文代码或者项目的依赖列表,我可以为您提供更具体的帮助。当你在使用 Mockito 进行单元测试时遇到无法解析。原创 2024-08-21 00:02:12 · 333 阅读 · 0 评论 -
【项目实战】使用JMockit框架,创建和维护单元测试
模拟(Mocking): 模拟类或接口的行为,以便于测试。存根(Stubbing): 替换类或方法的实现。存根方法(Stub Method): 用于指定方法的行为和返回值。存根构造器(Stub Constructor): 用于指定构造器的行为和返回值。性能敏感的应用: 如果性能是关键因素,推荐使用 JMockit。集成性和社区支持: 如果你更关心 IDE 支持和社区活跃度,PowerMock 是更好的选择。API 简洁性: 如果你希望使用更简洁的 API,JMockit 可能更适合。现有项目。原创 2024-08-21 00:02:21 · 649 阅读 · 0 评论 -
【项目实战】A/B测试
A/B测试,和蓝绿部署以及金丝雀,完全是两回事。蓝绿部署和金丝雀是发布策略,目标是确保新上线的系统稳定,关注的是新系统的BUG、隐患。A/B测试,是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。原创 2024-08-05 23:09:11 · 78 阅读 · 0 评论 -
【好物推荐】性能测试之压力测试,常用的好用的压测工具Apache Bench (ab.exe)
Apache Bench (ab.exe),是Apache HTTP服务器自带的简单命令行工具。Apache Bench (ab.exe),适用于HTTP/HTTPS压力测试。Apache Bench (ab.exe),是轻量级的简单命令行工具。Apache Bench (ab.exe),用于快速测试Web服务器的性能。Apache Bench (ab.exe),是一个开源的、简单的 HTTP 压力测试工具。Apache Bench (ab.exe),通常用来测试 web 服务器的性能。原创 2024-08-01 00:17:05 · 161 阅读 · 0 评论 -
【好物推荐】性能测试之压力测试,常用的好用的压测工具(LoadRunner)
LoadRunner ,是一款成熟的性能测试工具LoadRunner ,是一款业界领先的功能和性能测试工具。LoadRunner ,由 Micro Focus 公司拥有.LoadRunner ,用于评估软件系统的性能、稳定性和可扩展性。LoadRunner ,能够模拟大量用户并发访问,以测试软件在真实世界负载下的行为,帮助识别和解决性能瓶颈。LoadRunner ,被广泛应用于企业级软件的性能评估,尤其适用于需要模拟大规模用户并发访问的场景。原创 2024-08-01 00:16:47 · 132 阅读 · 0 评论 -
【项目实战】性能测试之压力测试 (Stress Testing)
压力测试是将系统推向极限,测试系统在超出正常负载条件下的表现。目的是发现系统在极端条件下的行为、性能瓶颈和故障恢复能力。原创 2024-07-30 21:06:23 · 57 阅读 · 0 评论 -
【项目实战】性能测试之压力测试 VS 负载测试
负载测试(Load Testing)和压力测试(Stress Testing)都是性能测试的一种形式。它们用于评估软件系统在特定负载条件下的行为。尽管它们的目标都是评估系统的性能,但它们的重点和实施方法有所不同。负载测试和压力测试虽然都属于性能测试,但它们各有侧重。这两种测试对于确保软件系统的可靠性和性能都是非常重要的。原创 2024-07-30 21:06:03 · 87 阅读 · 0 评论 -
【异常】为啥我的JUnit要这么久,原来是这个@SpringBootTest注解在搞鬼!
SpringBootTest 注解是 Spring Boot 测试中常用的一个注解。@SpringBootTest 注解用于进行集成测试。原创 2024-06-26 10:12:25 · 222 阅读 · 0 评论 -
【异常】Jenkins构建之后,提示错误Reports path not found or is not a directory.../**/target/surefire-reports/*.xml
这两个错误信息表明,在尝试收集测试报告时,Maven Surefire插件无法找到指定路径下的报告文件夹或认为该路径不是一个目录。修改Junit的流水线如下内容。原创 2024-06-24 19:58:27 · 153 阅读 · 0 评论 -
【项目实战】使用Maven打包时,跳过执行测试用例(运行mvn install时,跳过Test)
在Maven项目中,如果你希望在打包时跳过执行测试用例(运行mvn install时跳过Test),可以采用以下几种方法:(1) 使用命令行参数(2)修改POM.xml配置(3)IDE集成。原创 2024-05-14 19:32:13 · 2847 阅读 · 0 评论 -
【异常】写了很多单元测试用例,但是SonarQube上显示的单元测试覆盖率依旧为 0.0%,原来是maven-surefire-plugin插件没有配置!
写了很多单元测试用例,但是Sonar上显示的单元测试覆盖率依旧为 0.0%原创 2024-04-08 21:26:30 · 3265 阅读 · 0 评论 -
【项目实战】性能测试之压力测试的系统性能指标基本介绍(RT响应时间)
RT响应时间,也称为Response Time。RT响应时间反映了用户从发起请求到收到响应所需的总时间。RT响应时间指的是从发送请求到收到响应的总时间。RT响应时间指系统对请求作出响应的时间。RT响应时间指从发送请求到收到响应所需的时间RT响应时间是指用户通过客户端发起一个请求开始后,直到客户端接收到服务器对该请求返回的响应结束,整个过程中所耗费的总时间。这个时间间隔涵盖了系统处理请求的所有阶段,这个时间包括接收请求(请求的发送)、内部处理(服务器的处理)、返回结果(响应的回传)等所有环节。原创 2024-04-07 09:24:56 · 529 阅读 · 0 评论 -
【项目实战】性能测试之压力测试的系统性能指标基本(并发用户数 与 并发量)
并发:一段时间访问的大量用户的请求并行:同一时刻的大量用户的请求。原创 2024-04-07 09:22:41 · 445 阅读 · 0 评论 -
【项目实战】性能测试之压力测试的系统性能指标基本介绍(吞吐量Throughput)
吞吐量(Throughput)吞吐量通常用每秒处理的事务数(TPS)或每秒查询数(QPS)来量化吞吐量直接反映了系统的处理能力。吞吐量是指在一次性能测试过程中网络上传输的数据量的总和。吞吐量指的是系统在一定时间内成功处理的请求数量。吞吐量是指系统在单位时间内处理请求的数量。吞吐量是指在一定时间内系统能处理的请求数量。吞吐量是性能测试中重要的系统性能指标之一。原创 2024-04-07 09:22:13 · 527 阅读 · 0 评论 -
【项目实战】性能测试之压力测试的系统性能指标基本介绍(每秒事务数TPS和峰值TPS)
峰值TPS是指系统在特定高峰时段内能够处理的最大TPS。这个指标有助于了解系统在流量高峰期的表现。通常平均TPS是压力测试的重要指标之一,应与预期目标TPS值做对比。同时,取所采集到的请求的最小TPS和最大TPS作为测试结果。原创 2024-04-06 20:35:13 · 683 阅读 · 0 评论 -
【项目实战】性能测试之压力测试的系统性能指标基本介绍(每秒请求数QPS与峰值QPS)
QPS全称为Queries/Query Per Second,对应fetches/sec,QPS = req/sec = 请求数/秒翻译为:每秒查询率,每秒请求数,即每秒钟的查询次数,每秒的响应请求数,也即是最大吞吐能力。QPS提供了一个瞬时的负载情况。QPS是一台服务器每秒能够相应的查询次数QPS是衡量服务器性能的关键指标。QPS是一个衡量系统性能的指标,表示每秒查询率。QPS具体指的是一台服务器每秒能够响应的查询次数。原创 2024-04-06 20:19:54 · 597 阅读 · 0 评论 -
【好物推荐】推荐一款好用但收费的单元测试编写工具Squaretest
Squaretest是一款收费但好用的单元测试编写工具。Squaretest是一款自动生成单元测试的插件。Squaretest是一款值得推荐的单元测试编写工具。Squaretest特别适合用于提升代码覆盖率和解决sonar扫描出的问题。Squaretest尤其适合那些需要快速提升代码覆盖率和应对代码质量问题的项目。原创 2024-04-06 10:43:17 · 1680 阅读 · 0 评论 -
【项目实战】Java单元测试入门框架——JUnit的简单介绍
此测试框架使用的Junit测试版本是Junit4.12;Junit4.X后的测试框架使用的是Java的注解,而这些注解已经大概包括了一个测试用例的生命周期,主要执行顺序如下:@BeforeClass->@Before->@Test->@After->@AfterClass,而每个测试方法的执行顺序为:@Before->@Test->@After;表1说明了Junit框架各个注解;原创 2024-03-14 09:51:58 · 108 阅读 · 0 评论 -
【项目实战】JUnit 4中使用@RunWith 注解 / JUnit 5中使用@ExtendWith 注解
测试类上使用 @ExtendWith(SpringExtension.class) 注解(使用的是 JUnit 5)测试类上使用 @RunWith(SpringRunner.class) 注解(使用的是 JUnit 4)原创 2024-04-01 20:55:07 · 1102 阅读 · 0 评论 -
【异常】IDEA 提示没有覆盖率结果。点击编辑以修复配置设置。
IDEA 提示没有覆盖率结果。点击编辑以修复配置设置。截图略。原创 2024-03-28 10:11:18 · 2244 阅读 · 0 评论 -
【异常】Mockito 默认不支持模拟 final 类
请注意,使用 mock-maker-inline 可能会增加测试的运行时间,并且可能不适用于所有情况。这个错误信息表明在使用 Mockito 进行单元测试时,你尝试模拟(mock)了一个 final 类,而 Mockito 默认不支持模拟 final 类。Mockito 提供了一个名为 mock-maker-inline 的配置选项,它可以允许 Mockito 模拟 final 类。如果不想修改被测试的类,并且 mock-maker-inline 选项也不适用,可以考虑使用 Mockito 的间谍功能。原创 2024-03-27 22:25:57 · 1175 阅读 · 0 评论 -
【项目实战】单元测试中,使用 @MybatisTest 注解代替 @SpringBootTest注解
MybatisTest 注解是 Spring Boot Test 的一部分,用于在测试时只加载 MyBatis 相关的 beans,这样你可以专注于测试 MyBatis mapper 而不需要加载整个应用上下文。原创 2024-03-26 12:52:24 · 534 阅读 · 0 评论 -
【异常】单元测试框架Mockito提示MockitoException: Failed to release mocks This should not happen unless you are
要解决这个问题,你可以检查你的代码,确保正确使用Mockito框架和参数匹配器。确保你正确地创建了mock对象,并在需要的地方使用了正确的参数匹配器。如果你正在使用第三方的mock maker,请确保它与Mockito框架兼容,并按照其文档进行正确的配置和使用。具体来说,它指出在释放mock对象时出现了失败,并且给出了一个可能的原因是使用了第三方的mock maker。请注意,这只是一个示例,你需要根据你的具体情况进行适当的修改和调整。此外,它还提到了一个更具体的错误:无效的参数匹配器使用。原创 2024-03-26 12:33:39 · 1959 阅读 · 0 评论