《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(3)

简介: 《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(3)

《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(2) https://developer.aliyun.com/article/1232114?groupCode=java



2. FIRST原则

 

FIRST原则内容如下:

 

 

 

 

F-Fast(快速的)

 

单元测试应该是可以快速运行的,在各种测试方法中,单元测试的运行速度是最快的,大型项目的单元测试通常应该在几分钟内运行完毕。

 

I-Independent(独立的)

 

单元测试应该是可以独立运行的,单元测试用例互相之间无依赖,且对外部资源也无任何依赖。

 

R-Repeatable(可重复的)

 

单元测试应该可以稳定重复的运行,并且每次运行的结果都是稳定可靠的。

 

S-SelfValidating(自我验证的)

 

单元测试应该是用例自动进行验证的,不能依赖人工验证。

 

T-Timely(及时的)

 

单元测试必须及时进行编写,更新和维护,以保证用例可以随着业务代码的变化动态的保障质量。

 

3. ASCII原则

 

阿里的夕华先生也提出了一条ASCII原则:

 

Automatic(自动的)

 

单元测试应该是全自动执行的,并且非交互式的。

 

S-SelfValidating(自我验证的)

 

单元测试中必须使用断言方式来进行正确性验证,而不能根据输出进行人肉验证。

 

C-Consistent(一致的)

 

单元测试的参数和结果是确定且一致的。

 

I-Independent(独立的)

 

单元测试之间不能互相调用,也不能依赖执行的先后次序。

 

I-Isolated(隔离的)

 

单元测试需要是隔离的,不要依赖外部资源。

 

4. 对比集测和单测

 

根据上节中的单元测试原则,我们可以对比集成测试和单元测试的满足情况如下:


image.png

通过上面表格的对比,可以得出以下结论:

 

集成测试基本上不一定满足所有单元测试原则;

单元测试基本上一定都满足所有单元测试原则。

 

所以,根据这些单元测试原则,可以看出集成测试具有很大的不确定性,不能也不可能完全代替单元测试。另外,集成测试始终是集成测试,即便用于代替单元测试也还是集成测试,比如:利用H2内存数据库测试DAO方法。




《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(4) https://developer.aliyun.com/article/1232112?groupCode=java


相关文章
|
10月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
399 119
|
11月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1287 0
|
11月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
655 100
|
12月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
11月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
3614 8
|
11月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
1597 12
|
10月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
JSON Dubbo 测试技术
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
396 2
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
384 5