享受代码,享受人生

SOA is an integration solution. SOA is message oriented first.
The Key character of SOA is loosely coupled. SOA is enriched
by creating composite apps.
posts - 207, comments - 2289, trackbacks - 129, articles - 44
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

Enterprise Test Driven Develop

Posted on 2005-08-09 10:15 idior 阅读(3141) 评论(5)  编辑 收藏 所属分类: TDD

       TDD这个概念出现至少也有两年多了, 在大家刚接触它时候, 几乎没人不拍手鼓掌, 测试驱动的概念确实可以为我们带来很多的好处. 泡泡在前不久写了一篇很不错的TDD的文章, 可是我还是忍不住在他的评论中说到这篇文章有点”. 确实,同样的概念在书中, 在大家的口中已经被说烂了. 但是TDD真正给我们带来什么呢? 有多少人在用TDD? 为什么这么好的技术到了应用中就被人们抛弃了呢?

(: Design Pattern面世都十几年了, 现在还是有不少好书在介绍它,所以不代表不好,泡泡的总结在园子里还是最好的一篇TDD文章, 特别建议刚接触TDD的参考之.)  

       TDD的应用是阻挠TDD发展的重要原因, 回想一下有关TDD书中举的那些例子. 再想想你学习了解TDD自己又做了哪些应用? --- 类库, 最基本的几个类之间协作, 不涉及数据库,不涉及UI,不涉及企业服务. 这样看来TDD最适用的场合就是不涉及复杂应用的类库. 比如一个保龄球游戏, 一个Money兑换系统. 如果是这样那TDD自然没有人用了, 真正的项目有几个不涉及复杂应用呢, 有几个不和数据库,界面打交道? 可是一旦你想将TDD应用于此时, 你就会发现烦不胜烦, 无从下手.

       难道TDD真得这么不堪一击?...  详细内容

        
Something you should know

不要去测试类中的每个方法. 要测试这个类对外所能提供的功能, 这些功能可能是其中的几个重要方法,可能需要类中的几个方法协作. 记住一点, TDD中测试代码也是文档的一部分, 你应该通过你的测试代码告诉别人如何使用这个类.

Feedback

#1楼    回复  引用  查看    

2005-08-09 21:32 by Ninputer      
想了最近几个项目,要实现TDD都是极为困难的,因为某些功能基于Web广泛的数据,有些功能基于持续增长的数据库,有些则与统计意义的模型相关,极少有那种输入输出非常确定的功能函数或类。可能纯粹观察TDD能发现不少优点,但是实践的项目总是更加千变万化,让银弹们打不中。

#2楼 [楼主]   回复  引用  查看    

2005-08-09 22:38 by idior      
@Ninputer
深有同感, 有些技术实施起来就问题多多, 需要不断学习不断调整,这篇文章也仅仅是介绍一些好的方法.

输入输出不确定, 如果调用的方法比较稳定倒是可以考虑使用Mock对象.

#3楼    回复  引用    

2006-04-30 14:06 by 申松淦 [未注册用户]
请教几个问题:
首先我想知道的是你的Rhino Mocks2用的是什么版本的,我下载了好几个版本都
发现MockRepository没有实现IDisposable接口,所以不能用using的方法来写。
还有,我现在碰到一个问题
mockView = (MovieListEditorView)mocks.CreateMock(typeof
(MovieListEditorView));
mockView.setMovies(movies);
mocks.ReplayAll();
MovieListEditor editor = new MovieListEditor(movieList, mockView);

MovieListEditorView是一个接口:
public interface MovieListEditorView
{
void setMovies(System.Collections.ArrayList movies);
}

public class MovieListEditor
{
public MovieListEditor(MovieList movieList, MovieListEditorView
aView)
{
aView.setMovies(movieList.getMovies());
}
}

我想问一下的是,为什么会出现这个错误呢:
Test method TestMovieManage.TestGui.TestList threw exception:
Rhino.Mocks.Exceptions.ExpectationViolationException:
MovieListEditorView.setMovies(System.Collections.ArrayList); Expected #0,
Actual #1.
MovieListEditorView.setMovies(System.Collections.ArrayList); Expected #1,
Actual #0..
应该怎么解决呢???
可以抽个时间回复我一下吗?或者加我的msn好吗?我的msn:ssgzhl@hotmail.com

#4楼 [楼主]   回复  引用  查看    

2006-05-01 13:34 by idior      
@申松淦
check this
http://idior.cnblogs.com/archive/2006/05/01/389949.html

#5楼    回复  引用  查看    

2006-10-30 10:33 by 走路会有风      
现在TDD遇到的问题,个人认为主要是在两个方面:1、测试如何指导开发大家还没有得到要领,认真看有关面向对象的书籍再结合《Junit in Action》,理解TDD的宗旨。2、目前测试方法还比较复杂,在涉及到UI以及Web方面时就遇到麻烦了。不是说带UI或者是Web的东西就不可以测试,而是不太好测试,不过现在情况已经有所改观,很多框架中都提出了解决方案,比如Spring中就有能不运行服务器就测试Web应用的TestCase,还提供了大量的Request,Response等等常用Mock。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-05-01 14:02 编辑过