oscar999
毕业于中国科学技术大学,数据库四级、通过系统设计师、系统分析师、信息系统项目管理师资格认证。国际项目管理(IPMP)C级认证。超过20年软件项目开发和管理经验,精通Java Web相关技术(包括Spring系列、Ext JS等),对PHP、Python、C#、Vue等有涉猎。
展开
-
Mockito如何对静态方法进行测试
在 Mockito 中,直接对进行模拟是困难的,因为 Mockito 的设计理念是优先通过依赖注入(DI)管理对象,而静态方法破坏了这种设计(难以解耦)。不过,从版本开始,通过mockStatic方法支持了对静态方法的模拟(需配合依赖)。从开始,mockito-inline 直接放入到 mockito-core 中了。发布于 2023年4月,目前Mockito的最新版本是5.17.0(2025年4月)。如何使用JUnit 进行测试,可以直接导入mockito-junit-jupiter</</</</原创 2025-04-09 22:07:44 · 290 阅读 · 0 评论 -
单元测试原则之——不要过度模拟
过度模拟(over-mocking)是指在单元测试中,模拟了太多依赖项,甚至模拟了本不需要模拟的简单对象或行为。测试代码变得复杂,难以阅读和维护。测试逻辑偏离了实际业务逻辑,无法验证真实代码的行为。忽略了被测单元与依赖项之间的真实交互。好的!我将通过一个简单的 Java 示例,对比过度模拟(Over-Mocking)和合理模拟的区别,帮助你理解为什么应该避免过度使用 Mockito 的mock。// 订单对象(简单的 POJO)// 构造方法、getter、setter 省略。原创 2025-04-09 21:25:01 · 197 阅读 · 0 评论 -
单元测试原则之——不要模拟值对象 (1)
假设我们有一个服务类 OrderService,它接收一个 Order 对象(值对象)并计算订单的总价。:模拟有行为的依赖(如服务、仓库、外部 API 客户端),而不是值对象。:值对象的逻辑简单,直接实例化即可,模拟可能掩盖潜在的错误。● 模拟数据库访问对象(如 UserRepository)。:模拟值对象需要额外的代码,增加了测试的复杂性。直接使用值对象的实际实例,避免了模拟的复杂性。● 值对象本身没有行为,直接实例化即可。:直接实例化值对象,而不是模拟它们。:值对象没有行为,直接实例化即可。原创 2025-04-02 23:12:38 · 346 阅读 · 0 评论 -
单元测试原则之——不要模拟不属于你的类型
这是因为外部库或框架的类型(如第三方依赖)可能会在未来的版本中发生变化,而你的模拟可能无法反映这些变化,从而导致测试失效。以下是一个基于Java Mockito 的示例,展示如何避免模拟不属于你的类型,以及如何使用抽象或接口来隔离外部依赖。:通过定义接口或抽象层,将外部依赖的实现细节隐藏在适配器类中,测试代码只依赖于接口。:直接模拟第三方库或框架的类型会增加测试与实现的耦合,降低测试的可维护性。● 模拟第三方类型增加了测试与实现的耦合,降低了测试的可维护性。:模拟接口或抽象层,而不是具体的第三方类型。原创 2025-04-02 22:58:00 · 207 阅读 · 0 评论 -
单元测试中的测试替身(基于Java的示例)
在单元测试中听到比较多的词就是Mock, 即模拟,也就是模拟一个虚拟的对象替代原来的对象,以便单元测试可以专注在所测试的单元。但其实单元测试中的模拟是有多种类型的,这些虚拟和模拟统称是测试替身。测试替身(Test Doubles)用于,使测试专注于目标单元的逻辑。原创 2025-03-31 22:53:41 · 358 阅读 · 0 评论 -
说清楚单元测试
单元测试是软件开发中一种重要的测试方法,其核心目的是验证代码的最小可执行单元(通常是函数、方法或类)的行为是否符合预期。这些示例展示了如何在不同编程语言中编写和运行单元测试。每个示例都测试了一个简单的加法函数。首先,确保已经安装了 Jest。Python (使用 unittest)JavaScript (使用 Jest)借由本篇,来全面看一看单元测试。Java (使用 JUnit).NET (使用 NUnit)然后,创建一个测试文件,例如。原创 2025-03-31 22:18:03 · 306 阅读 · 0 评论 -
自动化测试工具-Playwright介绍和快速实例
PlayWright 自动化测试工具:支持在Windows、Linux和macOS上运行测试,无论是本地环境、CI/CD流水线,还是无头/有头模式。:捕获测试执行全量信息(包括屏幕录像、实时DOM快照、操作回放、测试源码等),深度复盘失败原因。运行之后会打开一个在线的报表,因为只安装了Chrome 的内核,所以其他4个测试是失败的。:遵循现代浏览器多进程架构,测试在独立进程中运行,彻底突破进程内测试框架的限制。原创 2025-03-19 23:02:51 · 153 阅读 · 0 评论 -
自动化测试工具-Playwright介绍和快速实例
PlayWright 自动化测试工具:支持在Windows、Linux和macOS上运行测试,无论是本地环境、CI/CD流水线,还是无头/有头模式。:捕获测试执行全量信息(包括屏幕录像、实时DOM快照、操作回放、测试源码等),深度复盘失败原因。运行之后会打开一个在线的报表,因为只安装了Chrome 的内核,所以其他4个测试是失败的。:遵循现代浏览器多进程架构,测试在独立进程中运行,彻底突破进程内测试框架的限制。原创 2025-03-18 22:31:57 · 481 阅读 · 0 评论 -
一个不错的API测试框架——Karate
Karate 作为英文单词翻译过来的意思是:空手道,不过这里的Karate 和日本无关,和李小龙也没有关系, 而是一个API的测试框架。Karate框架遵循Cucumber风格的编程方式,这种方式遵循行为驱动开发(BDD)的方法。非编程人员也能轻松理解其语法。这个框架是唯一一个将API自动化测试和性能测试结合成一个独立工具的API测试工具。Karate是一个BDD(行为驱动开发)测试框架,而不是TDD(测试驱动开发)。它被设计为对非程序员友好。原创 2025-02-24 22:40:07 · 238 阅读 · 0 评论 -
[API测试] Karate 之独立运行方式
在这一篇中介绍了如何在Maven项目中,如何结合JUnit 运行 Karate的API测试, 如果是专职的QA人员来测试, 对Java语言或者Maven完全不熟悉的话要怎么来运行Karate的测试呢?答案就是使用Karate的独立运行方式。原创 2025-01-02 22:33:42 · 169 阅读 · 0 评论 -
Python BDD 框架比较之 pytest-bdd vs behave
这两个框架都有其优点和特性,选择哪一个主要取决于特定需求。如果你已经在使用pytest,并且希望以最少的学习曲线使用 BDD,那么pytest-bdd可能是更好的选择。另一方面,如果你希望编写的测试代码更接近自然语言,并且适合非技术团队成员阅读和修改,那么behave可能是更好的选择。原创 2023-11-24 07:11:08 · 1543 阅读 · 0 评论 -
在VS Code中进行Java的单元测试
在VS Code中可以使用 Test Runner for Java扩展进行Java的测试执行和调试。原创 2024-05-28 22:38:08 · 3921 阅读 · 2 评论 -
JMeter实战之——模拟登录
本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。原创 2024-10-23 22:34:42 · 2217 阅读 · 0 评论 -
Java 中使用Mockito 模拟对象的单元测试的快速示例
Mockito是一个流行的Java模拟框架,它允许你在单元测试中创建和配置模拟对象,以便在测试过程中替换那些不容易构造或获取的对象。Mockito可以与JUnit无缝集成,下面的示例演示 Mockito + JUnit实现模拟对象的单元测试。原创 2024-11-10 20:13:02 · 794 阅读 · 0 评论 -
Java 单元测试模拟框架-Mockito 的介绍
Mockito 允许开发人员创建和管理模拟对象(mock objects),以便在测试过程中替换那些不容易构造或获取的对象。Mockito 是一个用于单元测试的模拟框架,基于它可以使用简洁易用的API编写出色的测试。Mockito当前的最新版本是 5.14.2,在pom.xml中导入之后就可以开始使用了。创建Mock对象, 验证对象的方法是否被调用了。Mockito的使用步骤。模拟方法执行返回的结果。原创 2024-12-01 20:51:46 · 2001 阅读 · 0 评论 -
Karate 介绍与快速示例(API测试自动化、模拟、性能测试与UI自动化工具)
Karate是一个将API测试自动化、模拟、性能测试甚至UI自动化结合到一个统一框架中的开源工具。Karate 是用Java语言编写, 可以在Java 项目项目中运行API的测试,对于不熟悉Java的团队,Karate提供了一个跨平台的独立可执行文件。不必编译代码。只需以简单易读的语法编写测试——为HTTP、JSON、GraphQL和XML精心设计。可以在同一测试脚本中混合使用API和UI测试自动化。原创 2025-01-01 22:12:19 · 737 阅读 · 0 评论