速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑

汪子熙

CRM abap WebClient UI

《觉醒年代》观后感

xiezhr

觉醒年代 五四运动 南陈北李

中国与世界共享数字经济机遇

CECBC

数字经济

☕【JVM 技术之旅】深入挖掘Java对象的内存结构

洛神灬殇

JVM java对象分析 java对象 5月日更 内存对象结构

架构实战营模块4作业

阿体

为什么很多程序员,成为不了技术大牛?

实力程序员

【Flutter 专题】121 图解简易 Slider 滑动条

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

CRM WebUI and Hybris的Product页面标题实现

汪子熙

CRM SAP WebClient UI Hybris

小走神

Nydia

学习

云智慧发布《智能业务运维》2021年刊 邀您共览数字化运维全景象

云智慧AIOps社区

AIOPS 智能运维

Hybris开发环境的license计算实现

汪子熙

Java SAP Hybris Commerce Cloud

k8s 上运行我们的 springboot 服务之——技术方案实现图

柠檬

k8s SpringBoot 2

人生算法:掌控大脑的两种模式

石云升

读书笔记 思维模型 5月日更

多元线性回归模型 - DAY14

Qien Z.

5月日更 多元线性回归

谈一谈Java的前生今世

孙叫兽

Java jdk 发展史

Java基础(一)——Java入门和IntelliJ IDEA使用

空城机

Java IDEA 5月日更

一文带你认识MindSpore新一代分子模拟库SPONGE

华为云开发者联盟

神经网络 mindspore 新一代分子模拟库 SPONGE 分子结构

PlatONE联盟链如何实现大规模生产级应用?

CECBC

Java 基础(一)——Java 入门

空城机

Java 5月日更

阿里巴巴P8自爆:Java八大核心思维导图知识梳理

Java架构师迁哥

教你用 3 行代码发邮件

小匚

Python 学习 自动化

Rust从0到1-泛型-定义

rust 泛型 generic

Github Action 自动构建 Flutter Android Apk

Leetao

flutter Github Actions

微服务架构设计之解耦合

Damon

微服务 5月日更

着力区块链技术等方向,上海这所高校成立研究院

CECBC

防火墙

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

前端开发:node.js的node包管理器npm安装以及使用

三掌柜

5月日更

【数据标注的类型有哪些】看懂这篇文章就够了!

澳鹏Appen

人工智能 机器学习 大数据 数据标注

Flink 实时计算在微博的应用

Apache Flink

flink

解密华为云FusionInsight MRS新特性:一架构三湖

华为云开发者联盟

数据湖 云原生 华为云 FusionInsight MRS TechWave

ABAP Netweaver和Hybris里获得内存使用统计数据

汪子熙

Java CRM abap C4C Hybris

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