单元测试规范

如何进行Java 单元测试 Java 单元测试是指对软件中的最小可测试单元进行测试,以保证代码的质量和正确性,并且可以加速开发过程。本文将全面详细地介绍 Java 单元测试相关知识点,包括单元测试的定义、优点和流程、JUnit 测试框架、Mockito 框架、持续集成、代码覆盖率和测试驱动开发等,希望读者能够了解这些知识点,并更好地应用它们来提升自己的开发水平。单元测试的定义单元测试是指对软件中的最小可测试单元进行测试,包括函数、方法和类等。它可以独立地测试每个组件,以保证代码的质量和正确性,并且可以加速开发过程。 阅读详情

单元测试规范

单元测试(Unit Test),下方统一简称为 UT。

一、Java UT 规范

技术选型

Java UT 框架选型:TestNG

选型参考:

Java UT 的 Mock 框架选型:JMockit

选型参考:

文件、类与方法命名规范

术语定义:

  • 源文件(SRC-PATHNAME):需要做 UT 的逻辑代码的代码文件
  • UT文件(UT-PATHNAME):为源文件写的 UT 代码的代码文件
  • 源类(SRC-CLASSNAME):源文件中的类
  • UT类(UT-CLASSNAME):UT文件中的类
  • 源方法(SRC-METHOD):源类中定义的方法/函数
  • UT方法(UT-METHOD):UT类中定义的方法/函数

源文件必须存放在 SRC-ROOT 目录:

SRC-ROOT = "src/main/java"

UT文件必须存放在 UT-ROOT 目录:

UT-ROOT = "src/test/java"

文件命名规范如下:

UT-PATHNAME = UT-ROOT SRC-PACKAGE-PATH SRC-CLASSNAME "Test.java"
SRC-PACKAGE-PATH = replace SRC-NAMESPACE from "." to "/"
SRC-CLASSNAME = 1*(upcase-alpha *lowcase-alpha)
SRC-NAMESPACE = 1*lowcase-alpha *( "." 1*lowcase-alpha)
lowcase-alpha = %x61-7A
upcase-alpha = %x41-5A

以上规范的举例:

  • 假定源类的全限定名为 com.fangdd.api.Service
  • SRC-ROOT 必须是 src/main/java
  • UT-ROOT 必须是 src/test/java

那么源文件路径是

src/main/java/com/fangdd/api/Service.java

它对应的 UT 文件的路径必须是

src/test/java/com/fangdd/api/ServiceTest.java

另外需要提醒的是:UT 不对接口做测试,而是对具体实现做测试。比如:

对于接口文件:
src/main/java/com/fangdd/api/MyService.java
假定对应的实现类文件为:
src/main/java/com/fangdd/api/MyServiceImpl.java
那么 UT 的文件为 MyServiceImplTest.java,而不是 MyServiceTest.java:
src/test/java/com/fangdd/api/MyServiceImplTest.java

重要提醒 Team Code 做 Verify 的 Robot 为
了提高 UT 的效率,只会按照以上规范来查找变更的源文件有没有对应的 UT 文件。如果有
UT 文件,则做 UT,如果没有,则跳过。因此,大家一定不要绕过这个约束。

UT 全限定的类名由包名与基本类名组成。其规范与文件路径规范相一致。
即其中包名必须与源类的包名相同;基本类名为源类的基本类名 + Test 后缀。

例如:

package com.fangdd.api;
public class MyServiceImpl {}

对应的 UT 类为

package com.fangdd.api;
public class MyServiceImplTest {}

UT 方法名的规范为:

UT-METHOD = "test" CAMEL-CASE-SRC-METHODNAME [SUFFIX-NAME]
CAMEL-CASE-SRC-METHODNAME = upcase first char for SRC-METHODNAME
SUFFIX-NAME = *任意有效的字符

例如,源方法名为:

doRequest()
doRequest(String url)

那么对应的 UT 方法名为:

testDoRequest()
testDoRequest_string() // 以方法签名为后缀的形式来区分
或者
testDoRequest1() // 以序数为后缀的形式来区分

重点提示 测试方法必须以 test 为前缀,接源方法的大驼峰形式的方法名,
再接可选的后缀。后缀无特别要求。

使用 IntelliJ IDEA 创建符合本规范的 UT Case

  1. 在 Editor 中打开源文件
  2. 将光标定位到定义类名的那一行
  3. 接 Alt+Enter 或 Ctrl+Shift+T(如果已创建则直接跳到UT文件) 弹出集成菜单
  4. 点击菜单中的 【Create Test】,弹出创建 UT 文件的对话框
  5. 在 【Testing library】中选择 TestNG
  6. 如果没有安装 TestNG,会显示一行提示,点击【Fix】按钮即可
  7. 默认在【Class name】中会自动填写符合本规范的 UT 类名,如果不符合规范,则改之,使之符合
  8. 【Superclass】留空不填
  9. 默认在【Destination package】中会自动填写符合本规范的 UT 包名,如果不符合规范,则改之,使之符合。注:如果 IDEA 无法读取你的工作,会因识别不到 package 名而无法创建 UT 文件,此时就先解决工程问题(如 maven, gradle)
  10. 适当选择【Generate】 @Before 与 @After
  11. 在列出的源方法列表中,选择需要做测试的方法
  12. 点击【OK】即可创建符合本规范的 UT Case了

一个 TestNG 的简单示例

# 安装 TestNg 
mkdir -p /data0/app/testng
cd /data0/app/testng
wget http://jcenter.bintray.com/org/testng/testng/6.9.13/testng-6.9.13.jar

# 编写测试示例
mkdir -p fortest/src/main/java/mytest
mkdir -p fortest/src/test/java/mytest
vim fortest/src/main/java/mytest/Plus.java
vim fortest/src/test/java/mytest/PlusTest.java

# 设置 CLASSPATH,让 java 能找到 testng 与我们编写的 class
export CLASSPATH=/data0/app/testng/testng-6.9.13.jar:/data0/app/testng/fortest/src/main/java/mytest:/data0/app/testng/fortest/src/test/java/mytest

# 编译示例文件
cd /data0/app/testng/fortest/src/main/java/mytest
javac Plus.java
cd /data0/app/testng/fortest/src/test/java/mytest
javac PlusTest.java

# 开始测试
# 我们的 CI 做测试时,只使用命令
# java java org.testng.TestNG -testclass class1[,class2,...]
# 来做单元测试 
java org.testng.TestNG -testclass mytest.PlusTest

文件 Plus.java 代码:

package mytest;

public class Plus {

    public int plus(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        Plus p = new Plus();
        System.out.println("1 + 2 =" + p.plus(1, 2));
    }

}

文件 PlusTest.java 代码:

package mytest;

import org.testng.annotations.*;
import org.testng.asserts.Assertion;

public class PlusTest {

    @Test
    public void testPlus() {
        Plus p = new Plus();
        Assertion a = new Assertion();
        a.assertEquals(3, p.plus(1, 2));
        a.assertNotEquals(0, p.plus(3, 5));
        System.out.println("Test Plus method:");
    }

}

测试团队写了一个 unittest-case 的示例项目,以及如何使用 TestNG 与 JMockit 的文档,
请参考 房多多单元测试。

二、Python UT 规范

三、PHP UT 规范

ROS自定义地图实战:从CAD到导航的完整流程 本文详细介绍了如何将CAD图纸或手绘草图高效转换为ROS机器人可直接使用的导航地图。通过解析PGM与YAML标准格式,提供从图像处理、尺度校准到集成AMCL与move_base导航栈的完整实战流程,帮助开发者跳过繁琐的SLAM建图,实现快速、精准的自定义地图部署。 阅读详情

相关推荐

【CTFWP】ctfshow-web40

CTFWP:ctfshow-web40

LongL_GuYu的博客 1863

单元测试编写规范

为了统一司内的单元测试编写风格,且让大家无需考虑不重要的事情(无脑按着条条框框执行就好了),专注于写单元测试。基于司内的具体情况,制定了一套简单的《单元测试编写规范》,在这里进行分享,希望能给大家提供一些思路。........................

cab5的博客 2128

Gromacs实战:从蛋白质-小分子对接到分子动力学模拟全流程解析

本文详细解析了使用Gromacs进行蛋白质-小分子对接和分子动力学模拟的全流程,包括文件准备、拓扑生成、复合物构建、溶剂化处理、能量最小化及平衡模拟等关键步骤。通过实战案例,帮助研究者验证药物分子与靶标蛋白的结合稳定性,提升分子动力学模拟的效率和准确性。

weixin_29216353的博客 380

单元测试规范和实践

这篇文章叙述了单元测试的规范,还举了一个简单的实例,说明怎么写单元测试。

jeffersonchern的博客 1899

SAP和Oracle EBS作为全球顶级的ERP系统,在中国市场深耕数十年,尤其是在大型国企、央企和跨国企业中,已经形成了强大的用户习惯和“舒适区”依赖

国产ERP替代国际系统的关键挑战在于打破用户对SAP/Oracle的操作习惯和心理依赖。需采取多维策略:战略上明确价值主张、分阶段实施;产品上优化用户体验、确保数据迁移;实施上加强情景化培训、流程再造。成功替代70%取决于变革管理,需将"被动替换"转为"主动升级",让用户在新系统中建立更优的舒适区。

金牌架构师 383

TIA protal与SCL从入门到精通(4)——软件单元使用

平台: TIA portal 15.1 1.添加软件单元 添加软件单元如下图: 关于软件单元使用基本限制,看如下文章即可 TIA protal与SCL从入门到精通(3)——软件单元基本介绍 每个软件单元是一个独立结构,所以每个软件单元的运行方式与实际PLC类似,所以首先添加主函数块: 注意:无论系统是否是具有并发性(这里不要混淆并行与并发的概念),在PLC所有主函数执行总是按主函数依次完成...

苦走一口田 7377

如何做好测试之单元测试(Unit Testing, UT)

单元测试(Unit Testing, UT),是软件测试的一种测试方法,旨在验证软件系统中的最小可测试单元(通常是函数、方法或类)的功能是否正确。它将软件系统拆分为各个独立的单元,并对每个单元进行独立测试,以确保其在隔离环境下能够按预期工作。

OKCRoss的博客 736

纯C语言实现的Luhn算法(信用卡校验位):详解与示例

在本文中,我们详细介绍了如何使用纯C语言实现Luhn算法,并提供了一些示例代码。用于检查任意长度的数字字符串的有效性,用于计算给定数字字符串的校验位字符。我们还提供了一个简单的“main”C程序,用于在命令行上接受一个或多个数字字符串,并计算它们的校验位字符。通过阅读本文和理解示例代码,我们希望读者能够更好地理解Luhn算法的工作原理,并能够在自己的项目中应用这种算法。

qq_38334677的博客 1221

单元测试的规范

一、测试准则 必须满足AIR原则 A:Automatic(自动化) I:Independent(独立性) R:Repeatable(可重复) 可参照27条准则。 引用链接:https://blog.youkuaiyun.com/neo_ustc/article/details/22612759 原文链接:https://petroware.no/unittesting.html 如下: 27条准则...

602

Python爬虫实战:使用最新技术爬取GitHub Trending项目

本文将详细介绍如何使用Python最新技术栈构建一个高效的GitHub Trending爬虫。我们将使用异步请求库httpx、HTML解析库parsel、数据存储方案以及反反爬技术,完整实现一个能够稳定获取GitHub Trending数据的爬虫系统。文章包含5000余字详细教程,从环境搭建到代码实现,再到数据处理和存储,最后部署运行,提供全方位指导。GitHub Trending页面展示了GitHub上当前最受欢迎的项目,对于开发者了解技术趋势、发现优秀项目非常有价值。

2201_76125261的博客 738

5套高颜值AI漫剧女主设定图!直接拿去做漫剧(附完整提示词)

左侧特写放大表现暖棕眼妆、豆沙唇、红宝石首饰、发丝与针织纹理,四个视图严格保持同一人物脸模、发色、服装、首饰和身体比例,柔和复古棚拍光,低饱和酒红与奶油色配色,真实布料、皮革、金属与宝石材质,高级精致角色资产设定图,高清8K。佩戴珍珠与透明水晶耳坠、纤细珍珠项链;左侧特写放大至胸部以上,清晰表现皮肤、眼妆、发丝、耳饰和针织材质,人物四个视图保持同一脸模、发型、服装、饰品和身体比例,柔和棚拍漫射光,轻微地面阴影,高级细腻材质,真实发丝,细腻皮肤,高精度角色资产设定图,高清8K质感。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1705

单元测试:规范

在编写测试方法时,尽可能覆盖业务方法中所有可能出现的情况,尤其是边界值。这是因为边界值往往是代码容易出现问题的地方。它强调要毫无遗漏地覆盖所有业务场景,这不仅仅是针对正常的业务逻辑,更要将目光聚焦在那些容易被忽视的边界情况上。

2401_86968005的博客 1241

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

Golang 单元测试规范

目录 前言 正文 1. 单元测试文件命名规则 2. 单元测试包命令规则 3. 单元测试方法命名规则 4. 单元测试方法参数 结尾 前言 说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是大多数时候不是为了单元测试而单元测试,而是为了应付检查而单元测试。上一篇文章已经大致介绍了如何在 VSCode 中配置 Golan

liuzhen007的专栏 789

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java单元测试规范_Java单元测试编码规范

包结构规范单元测试包结构和源码结构必须保持一致,如下图所示: 文件命名规范单元测试文件名字是由“被测试文件名 + Test”组成,如下图所示 代码编写规范基础单元测试类被各个单元测试继承,代码如下package com.cntest.su.demo;import com.cntest.su.DemoApplication;import org.junit.runner.RunWith;import...

weixin_36274779的博客 1123

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Golang 单元测试编写以及规范

Golang语言提供了一套单元测试编写规范,下面简单演示一下这个写法 单元测试文件必须以.go结尾 测试函数非常简单 calc.go package main func add(a, b int) int { return a + b } calc_test.go package main import "testing" func TestAdd(t *testing...

wwxy1995的博客 916

Java之单元测试和安全规范

来自Alibaba的Java开发手册单元测试规范安全规范 上一篇Java之异常日志 单元测试规范 1、【强制】好的单元测试必须遵守 AIR 原则。 说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上, 却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 A:Automatic(自动化) I:Independent(独立性) R:Rep...

legendaryhaha的博客 1315

单元测试编写规范总结

本文档制定了Java单元测试的规范标准,主要包括以下内容: 版本约束:明确限定测试框架版本(JUnit 5.6.3、Mockito 3.6.28等),确保兼容Java 8环境。 分类规范: 定义@UnitTest和@IntegrationTest注解区分测试类型 单元测试禁止启动Spring上下文,集成测试允许外部依赖 命名规则: 测试类按"被测类名+Test/IT"格式命名 测试方法采用"方法名_输入条件_预期结果"三段式命名 强制要求添加中文@DisplayName说明 AAA模式: 严格划分Arran

Dz_1221的博客 362

单元测试规范流程

目录导航 一.测试用例编写规范 1、测试用例编写目的 2、适用范围 3、测试用例 4、用例设计方法 5、测试用例设计的原则 6、用例设计步骤 二.测试规范 1、接口功能测试:用来保证接口功能的正确性 2、局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 3、边界条件测试 4、代码覆盖率 5、各条错误处理测试:保证每一个异常都经过测试 三.实施方案 1、idea安装ju...

weixin_41700804的博客 2745

java单元测试 规范_单元测试-java

单元测试-javaMaven项目​ 学java必学!!!如果你不愿意变强,请百度搜索idea或Eclipse怎么使用Junit。​ 单元测试,也需要遵循一定的编程规范,不能随便的写一个地方,也要做到格式规范,命名规范,结构规范等等。例如我要测试Demo类的方法:怎么使用?编写测试类编写测试方法点击运行例如:import junit.framework.TestCase;impo...

weixin_28769141的博客 940

单元测试规范 - 后端

这是2021我在A项目时,响应公司号召,提高代码质量.经理要求我们开始写单元测试.所以我写了这个规范出来.目前主要用的就是业务层的mock测试.

乌龟的专栏 285

程序员需要知道的单元测试规范,单元测试设计思想

单元测试规范。测试目的,测试原则,测试目标,测试单元设计准则,反向测试,测试成本,测试次序,测试结构规范。

luohaha66的博客 750
上一篇: Spring
下一篇: Paxos算法
iQuester
博客等级 码龄11年 22粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值