2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

访谈:新一代 Java 测试:TestNG 和高阶理念

  • 2008-03-07
  • 本文字数:760 字

    阅读完需:约 2 分钟

InfoQ.com 最近采访了新一代Java 测试:TestNG 和高阶理念的作者Hani Suleiman 和Cédric Beust,就针对这本书和他们对测试的总体看法进行了讨论。InfoQ 很荣幸在这里给大家提供该书第二章的节选,“Mocks 和Stubs”。

Cédric Beust 谈到如何令代码变得更加可测试时,说道:

  • 避免静态。非常不幸,由于存在很多难测的代码,使 singleton 和近似的模式把静态变得相当受欢迎。解决这个问题的一个方法是使用依赖注射框架(Hani 和我就很推崇 Guice,我们在书中有提到,但 Spring 也是一个很好的选择)。
  • 别再对“修改代码使之更易测试”而犹豫不决。如果这个修改意味着要将 private 函数改成 protected 或者 public,这常常是个可行的好主意。因为“激活自动测试能力”所得到的收益,往往要比“将函数变得更可见带来的潜在维护成本”要大得多。
  • 接口并没有像很多人希望你所相信得那样糟糕。很多 XP 开发员会跟你说不要引入任何接口,除非你确定至少会有两个类来实现该接口,但我们的处境是每个具体类潜在由两种不同的方式使用:产品中或者测试中。抽取出接口常常是使得你的代码更干净利落更易测试的举动。

Hani Suleiman 还提到,数据库测试是较难测试的内容之一。

的确,有很多工具能够帮助你完成数据库测试,也有很多的技术能够帮助你简化一些相关难题,但我尚未听说有一套好的解决方案,用于为迁移数据而编写测试。如果你根据一组静态数据写测试的话,那么你就会逐渐与真正运行中数据库背道而驰。如果你使用运行中的备份数据的话,那你就不得不处理安全因素,而且你必须确信你没有将敏感数据暴露给开发人员。在银行业,产品世界更是和开发有着严重的屏蔽。所以在保证数据库测试普遍有用性且能与自动测试并发,是需要很多技巧的。

查看文章全文:访谈及书摘:Hani Suleiman 和 Cedric Beust,《新一代Java 测试: TestNG 和高阶理念》 ****

2008-03-07 07:061166
用户头像

发布了 100 篇内容, 共 23.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

SBOM落地的关键一步——漏洞可利用性交流(VEX)

SEAL安全

软件供应链安全 漏洞管理

前端开发技术培训班靠谱吗

小谷哥

TCP异常场景:三次握手四次挥手丢包情况解析

Java全栈架构师

程序员 面试 TCP 计算机网络 秋招

融云移动办公协同平台,助力政企数智化转型升级

融云 RongCloud

企业 即时通讯

SENSORO 智慧城市平台中的延时队列设计

SENSORO

大数据 物联网 智慧城市 延时队列

MySQL的redolog如何保证数据不丢?其中原理你真的知道吗?

Java全栈架构师

Java MySQL 数据库 程序员 程序人生

独自一人开发一整套ERP系统是什么水平?

优秀

ERP系统

RT-Thread记录(十七、AT组件 — ESP8266使用 at_device 软件包联网)

矜辰所致

esp8266 RT-Thread 8月月更 AT组件

2022 DEMO CHINA 创新中国峰会将于9月7-8日在无锡举办

创业邦

RT-Thread记录(十六、SFUD组件 — SPI Flash的读写)

矜辰所致

RT-Thread 8月月更 SFUD SPI设备

上游sql通过drainer同步到kafka时在kafka中是什么样子的

TiDB 社区干货传送门

实践案例 管理与运维 版本测评 大数据场景实践 实时数仓场景实践

开放下载 | 飞天技术峰会-云原生加速应用构建分论坛资料开放下载

阿里巴巴云原生

阿里云 云原生

2022 全球 AI 模型周报

Zilliz

人工智能 深度学习 计算机视觉

历时10个月,1300+队伍参赛 第二届HarmonyOS开发者创新大赛奖项揭晓

极客天地

阿里巴巴全新出品Spring全家桶笔记:(Spring+SpringBoot+SpringCloud)

Java永远的神

Java spring 程序员 面试 程序人生

深入理解Java虚拟机!京东大佬耗时半年肝出来的HotSpot VM源码剖析笔记真香(附完整源码)

Java全栈架构师

Java 源码 面试 程序人生 JVM

使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼

阿里巴巴云原生

阿里云 Serverless 云原生 springboot 函数计算

看完年薪30W~120W程序员分别需要掌握的技能栈,我彻底悟了!

程序员小毕

Java 程序员 程序人生 后端 架构师

师文汇:OceanBase 4.0 产品核心能力解读

OceanBase 数据库

Dijkstra(迪杰斯特拉算法)的实现(C,C++,Matlab)

Five

算法 图论 8月月更

2022年网约车平台服务用户体验指数(UEI)

易观分析

用户体验 网约车平台

Dubbo 3 易用性升级之 Dubbo 官网大改版

阿里巴巴云原生

阿里云 开源 云原生 dubbo

PCTP考试学习笔记之一:深入TIDB体系架构(上)

TiDB 社区干货传送门

管理与运维 TiDB 源码解读 TiKV 源码解读 TiKV 底层架构

华为云算法零门槛:零基础教你AI试伊妆

程思扬

华为 API 华为云 开发者说

实战-记录一次大版本升级

TiDB 社区干货传送门

新版本/特性解读

TiFlash 表达式的实现与设计

TiDB 社区干货传送门

多种姿势搞定Tidb集群监控大屏

TiDB 社区干货传送门

监控

数字藏品:为何深受年轻人喜爱,到底有何魔力?

开源直播系统源码

数字藏品 数字藏品开发 数字藏品系统

swap去中心化交易所系统开发技术分析

开发微hkkf5566

pd-ctl 选项 --jq 格式化语法使用案例详解

TiDB 社区干货传送门

性能调优 实践案例 管理与运维 扩/缩容

PCTP考试学习笔记之一:深入TIDB体系架构(下)

TiDB 社区干货传送门

TiDB 底层架构 管理与运维 TiDB 源码解读 TiKV 源码解读

访谈:新一代Java测试:TestNG和高阶理念_Java_乔梁_InfoQ精选文章