写点什么

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

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

关注

评论

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

【云原生| Docker】 部署 Django & mysql 项目

计算机魔术师

8月月更

软件测试 | 测试开发 | 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock

测吧(北京)科技有限公司

Mock

字节跳动端智能工程链路 Pitaya 的架构设计

字节跳动终端技术

机器学习 客户端 端智能 Python. Pitaya

创新技术领航者!华为云GaussDB获颁2022年云原生数据库领域权威奖项

科技云未来

华为云GaussDB(for Redis)全面对比Codis

科技云未来

Spring源码分析(三)Spring是如何把元素解析成BeanDefinition对象的

石臻臻的杂货铺

spring 源码 8月月更

【操作系统 | Linux】介绍与安装(虚拟机)

计算机魔术师

8月月更

软件测试 | 测试开发 | 一文带你了解K8S容器编排(上)

测吧(北京)科技有限公司

k8s

Java即时编译(JIT)原理与调优

柠檬汁Code(binbin0325)

JVM JIT 即时编译

长安链源码分析启动(7)

长安链

在线图片隐写术解密解码传递数据

入门小站

工具

长篇图解etcd核心应用场景及编码实战

字母哥哥

Java etcd #Kubernetes#

Databend SQL Planner 全新设计

Databend

sql 大数据 开源 #开源 databend

演讲实录|吴亚昆:云时代智能运维与可观测性探索

观测云

在线XML转HTMLTable工具

入门小站

工具

日常工作最常用6大Git命令讲解

流浪的漂流瓶

git git stash 8月月更 git命令

C/C++模板类模板与函数模板区别,以及用法详解

CtrlX

c c++ 面向对象 模板方法 8月月更

【Django | 开发】 为已有遗留系统数据库生成管理后台

计算机魔术师

8月月更

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

计算机魔术师

8月月更

【Django | 开发】 (国际化项目&支持多语言)

计算机魔术师

8月月更

前端小白躺平摆烂可以吗

Liam

前端 前端开发 前端面试 Mock 前端入门

[CSS入门到进阶] 4行CSS实现footer置底!超常见的需求,快来收藏

HullQin

CSS JavaScript html 前端 8月月更

如何正确理解Java对象创建过程,我们主要需要注意些什么问题?

PivotalCloud

快手能做好ToB吗?

ToB行业头条

tob 快手

如何为开源项目撰写 RFC

Databend

大数据 开源 #开源 databend

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP/IP

Spring源码解析(四)Spring是怎么处理BeanDefinition的?

石臻臻的杂货铺

spring 源码 8月月更

【Python | 词云】聊天记录绘制超美词云(七夕快乐 ,曾同学)

计算机魔术师

8月月更

Python如何用类和对象来编程?

和牛

Python 8月月更

设计模式的艺术 第十六章责任链设计模式练习(提供一个假条审批模块:如果员工请假天数小于3天,主任审批该请假条;如果天数大于或等于3天,小于10天,经理审批;如果天数大于或等于10天,小于30天,总经理审批;如果超过30天,总经理不能审批,提示相应拒绝信息)

代廉洁

设计模式的艺术

揭秘华为云GaussDB(for Redis)六大秒级能力盘点

科技云未来

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