写点什么

测试驱动的代码重用

  • 2007-09-19
  • 本文字数:649 字

    阅读完需:约 2 分钟

代码重用一直以来是软件开发领域的理想。我们已经尝试通过抽象化和框架来达到“代码重用”这一目的,而它们都有其自身的“痛处”。现在,有一种新方法来达到同样的目的,那就是利用搜索工具和开发人员写好的自动化测试代码来查找那些能够匹配接口与行为的开源代码。

Colin Atkinson 和他所在的曼海姆大学软件工程系的一个研究小组已经研发了一个叫做 merobase 的工具。假如你打算找到与你的接口 (结构) 相匹配的即有代码,你可以用这个工具在互联网上搜索。这个工具看来不错,却不是唯一的一个,还有其它的搜索引擎同样提供类似的服务,例如 Google Code Search

值得一提的是,Atkinson 和他的学生(Hummel 和 Monika Krug)研究出来的 merobase 不但能够以结构(structure)为条件进行搜索,还可以把行为(behavior)做为条件。这个特性不但已 成为搜索标准的一部分,而且是由开发者用 TDD 方式完成的。在网上找到的所有与所需接口相匹配的类都会通过那些给定的测试代码的测试。

Monika 还写了一个 Eclipse 插件,叫做 FAST (Fully Automated Search and Test),它会根据你写好的测试自动解析和查询 merobase。你只要在写好的测试类上点击右键,就可以从互联网上得到与其相匹配的实现类。

下面是一个为名为 Die 的类写的一个测试:

下面是 FAST 的操作:

下面是 FAST 返回的结果:

目前,这只是个研究性项目,但可以想到,对于大型组织来说这种方法是多么有用啊!因为你可以通过搜索并重用千万行代码,而无须投资去建设那些很难理解、使用和维护的框架或抽象结构。

原文英文链接: Test Driven Code Reuse

2007-09-19 20:531101
用户头像

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

关注

评论

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

【应用运维】公司业务迭代迅速,运维如何高效进行应用发布?

嘉为蓝鲸

可视化 PaaS 运维自动化 部署与维护 发布

vscode + vim : vscode 全键盘使用方案

lmymirror

vim vscode Spacemacs

奋力准备一个月成功进字节,来看一下我都看了哪些资料做了哪些准备

小Q

学习 编程 程序员 架构 面试

微服务通信之feign的配置隔离

编程 微服务 计算机

深圳区块链钱包系统开发,区块链钱包app源码

13530558032

这4个Java异常框架,很多人竟然还不知道

比伯

Java 编程 架构 面试 计算机

7面阿里,最后一面居然挂在了JVM上面!狠下决心恶补JVM知识

Java架构之路

Java 程序员 架构 面试 编程语言

为什么有的专科程序员比本科程序员薪资高?他们之间有多大的区别?

Java架构师迁哥

go-zero 如何扛住流量冲击(一)

万俊峰Kevin

microservice go-zero goctl Go 语言

备战2021年金三银四,阿里P8面试官梳理的2020年999道大厂高频Java面试题(附答案)

Java架构之路

Java 编程 程序员 架构 面试

懵了!一口气问了我18个JVM问题!

yes

面试 JVM

Java读取Excel/CSV格式的科学计数法问题

团子粑粑

Java Excel csv

渣本全力以赴33天,四面阿里妈妈(淘宝联盟),拿下实习岗offer

小Q

Java 学习 编程 架构 面试

接口测试并不只是测试参数和返回值

测试人生路

接口测试

区块链交易所软件,数字货币场外交易系统搭建

13530558032

架构师训练营 -week09-作业

大刘

极客大学架构师训练营

Android热修复之DexPatch介绍

阿里云金融线TAM SRE专家服务团队

android

在Codurance是如何面试技术人员的

sherlockq

面试 TDD

史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战

JackJiang

网络编程 Netty nio 即时通讯 IM

适用初学者的5种Python数据输入技术

华为云开发者联盟

Python 数据 函数

爆火的低代码,到底是真需求还是伪风口?

ToB行业头条

低代码

学习笔记:架构师训练营-第八周

四夕晖

K3d vs Kind 谁更适合本地研发

郭旭东

Kubernetes k3s kind

阿里P8大牛整理的300页图解网络知识+计算机底层操作系统

Java架构之路

Java 编程 程序员 架构 面试

nginx 平滑升级、以及导入第三方模块

sinsy

nginx 升级

架构师训练营 -week09-总结

大刘

极客大学架构师训练营

《深入理解java虚拟机》- java内存区域

never say never

JVM笔记 堆内存

区块链币支付系统开发搭建,USDT支付平台源码

13530558032

区块链IM即时社交通讯系统开发,区块链社交平台源码搭建

13530558032

C++调用Go方法的字符串传递问题及解决方案

华为云开发者联盟

c++ 内存 代码

来不及解释了,快上车!LR.NET开发平台助力企业信息互联

雯雯写代码

测试驱动的代码重用_Java_Amr Elssamadisy_InfoQ精选文章