InfoQ

新闻

测试驱动的代码重用

作者 Amr Elssamadisy译者 乔梁 发布于 2007年9月19日 下午8时53分

社区
Java,
Agile
主题
重用
标签
Eclipse,
JUnit

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

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

3 条回复

回复

插件做的太不友好了 发表人 凉粉 小刀 发表于 2007年9月19日 下午9时38分
Re: 插件做的太不友好了 发表人 霍 泰稳 发表于 2007年9月20日 上午12时20分
Re: 插件做的太不友好了 发表人 凉粉 小刀 发表于 2007年9月20日 上午2时35分
  1. 返回顶部

    插件做的太不友好了

    2007年9月19日 下午9时38分 发表人 凉粉 小刀

    偶刚给开发者发了邮件,好的创意,如果非要让人忍受不方便的操作的话,那势必不能流行开来

  2. 返回顶部

    Re: 插件做的太不友好了

    2007年9月20日 上午12时20分 发表人 霍 泰稳

    哪儿不友好?普遍现象还是不符合你自己的个人使用习惯?

  3. 返回顶部

    Re: 插件做的太不友好了

    2007年9月20日 上午2时35分 发表人 凉粉 小刀

    1. If there're many results matched the interface, and I only want one or two of them, I have to deselect the others one by one. "Select all" and "Deselect all" buttons are very helpful.

    2. after I click "Send the query to Merobase" button, then Eclipse will have no response for several seconds, which is the same as I click "Download and compile the selected classes - create project for each" button. The non-UI actions should run in a non-UI process, then it won't make the user feel uncomfortable.

    3. If I click "Run the test case on the selected classes" button, then I have no idea about what's happening, I mean there's no progress bar, no message showing that some class is being tested. Only after several minutes, then I can see "Skipped" or "passed" in "Result" column, I think it's not friendly to users.

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!