写点什么

访谈:新一代 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:061012
用户头像

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

关注

评论

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

java培训关闭流方法有顺序吗

@零度

JAVA开发 包装流

敲重点!这些更新将会影响HarmonyOS原子化服务上架

HarmonyOS开发者

HarmonyOS 原子化服务

为什么做开源需要懂异步协作?

腾源会

开源 腾源会

H5营销有什么优势?企业需要定制开发H5吗?

源字节1号

前端开发 后端开发 H5制作

大数据培训spark SQL中count(*)和count(1)源码分析

@零度

大数据开发 spark SQL

三高Mysql - 搭建“三高”架构之扩展与切换

懒时小窝

MySQL MySQL 高可用

不写代码,带你徒手开发一个健康打卡应用

华为云开发者联盟

无代码 AppCube 应用开发 健康打卡 可视化编排

状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02

vivo互联网技术

服务器 状态机

都2022年了,HDFS为何还如此能战

华为云开发者联盟

大数据 hadoop hdfs 分布式文件系统 大数据存储

平安普惠荆州分公司:警民齐心,共同抗疫

科技新消息

无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

crudapi

低代码 API crud crudapi 增删改查

三高Mysql - 搭建“三高”架构之复制

懒时小窝

MySQL MySQL 高可用

RDP是什么意思?有什么用?

行云管家

运维 网络协议 RDP

jackson学习之六:常用类注解

程序员欣宸

4月月更

面试官:Redis的事务满足原子性吗?

码农参上

redis 事务 4月月更

web前端培训开发者要掌握的CSS 技巧有哪些

@零度

CSS 前端开发

CPUvsGPU:谁才是游戏和视频编辑的核心?

Finovy Cloud

人工智能 gpu cpu

杭州等保测评公司有哪些?分别叫什么?如何能查到?

行云管家

等保 等级保护 等保测评 杭州

如何禁用XXE处理?

龙智—DevSecOps解决方案

漏洞扫描 代码安全 漏洞检测

ETL调度软件TASKCTL核心调度节点安装

敏捷调度TASKCTL

kettle 调度引擎 ETL 任务队列 调度任务

Android C++系列:JNI常见问题

轻口味

c++ android 4月月更

@所有高校师生,2022全国大学生物联网设计竞赛火热开启,限量礼品等你来拿!

HarmonyOS开发者

HarmonyOS 物联网设计竞赛

模块八作业:设计消息队列存储消息数据的 MySQL 表格

王大胖

盘点:阿里云上8款免费的开发者工具

阿里云云效

阿里云 开发者 云原生 开发者工具 研发工具

消息队列存储消息数据的MySQL表格设计

Geek_36cc7c

云效研发效能度量体系,如何展示和解读交付效能数据

阿里云云效

阿里云 运维 研发管理 研发效能 研发团队

怒肝 JavaScript 数据结构 — 栈篇(三)

杨成功

数据结构 4月月更

netty系列之:netty中的自动解码器ReplayingDecoder

程序那些事

Java Netty 程序那些事 4月月更

直播预告|年营业额百亿的企业都在如何做数字化转型

云智慧AIOps社区

数字化转型 AIOPS 解决方案 智能运维

逃离过度努力陷阱

FunTester

FunTester 湛卢 轻松主义

多个角度论证SeekTiger 生态核心STI的魅力

西柚子

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