今天同事和我讨论他遇到的一个问题。具体要求是这样的,在运行时,我们会从模块G得到一个Map,这个Map里面都是一些字符串对,你可以理解成一个字典,有字符串的key和字符串的value。简短节说,就是 Map<String, String> 非常非常复杂深奥。 好,现在我们事先知道要从这个map里读取一些数据点,比如:id, name, sex等等。 对id,我们知道读出来的是int;对name,是string;对sex,应该对应一个叫Gender的enum类型。 这就涉及一个自动类型转换的问题。我们希望不用对每个数据点做手工类型转换。 另外一个需求,一些数据点是有缺省值的。比如n ...
工作中,和同事对测试异常的最佳方法产生了分歧。 我是比较欣赏JUnit4的@Test(expected=FooException.class)的啦,觉得这样多清爽啊,多declarative啊,再不用写那么一大坨try-fail-catch了。 不过同事(以下简称S)不这么认为。他觉得try-fail-catch挺好的,价格便宜,量又足,我们一直用它。而JUnit 4和TestNG提供的这个功能容易引诱程序员犯错误。 S给提出了一个挑战: public void testDoSomethingBad() { initializeSomething(); try { ...
哎,一到下雪我就头疼。又得推着扫雪机吭哧吭哧扫雪。就说是三月学雷锋树新风,也不能总这样啊。妈的,还是住condo舒服,啥都不用干。住大房子?奉劝诸位还是等有钱养保姆,丫鬟,家丁了再说。
我对计算机界的八卦一向都不太敏感,也对很多所谓的“名人”不感兴趣。你说那章子仪,Britney好歹还能拿脸蛋,衣服,和衣服里面的东西来娱乐大众,一帮不知道哪来的猥琐男就写了点谁都能写的程序,又不是证明了歌德拔河,也不是火箭科学,有什么好追星的? 所以对Guice拿了Jolt也是后知后觉。不过在知道Guice是打败了Spring拿到的奖的,还是颇觉得欣慰了一下。 要说Guice也不是多完美,很多功能的缺失还是对使用造成了些障碍的。所谓的“EDSL”,或者马丁嚼了嚼前人吃剩的东西再吐出来给大众继续啃的“fluent interface”,给测试,扩展和阅读稳当都造成了很大的麻烦。(我的jpar ...
最近发现《Practical Ruby Projects》用rparsec来讲解怎么在Ruby里构建lisp。于是假公济私地用公司的账户订购了一本,也算给自己捧场。 书拿到,打开一看,好么,被批评了 引用Caution: For such an excellent library, rparsec plays very fast and loose with namespaces. Its parser classes are installed directly into root namespace. As a library author, try not to do this. ...
在1.4上,我最喜欢玩的是dynamic proxy。以前的那个Sum的“奇技淫巧”就人人喊打来着。自打不用担心对1.3, 1.4的兼容问题后,我发现我越来越爱拿着annotation的锤子到处乱砸了,而且是用reflection而不是apt。 给Guice加了一个@Provide的外壳: class MyModule extends AbstractModule { @Provide @Singleton public Foo foo(FooImpl impl) { return impl; } @Provide @LittleStrong ...
那啥?刚才说到哪了?“如云朵般的呵护”?下面谁说的?给我拉出去好好“呵护呵护”! 人家没那么说啦!讨厌!是刚才广告里说的嘛!我说刚才我们“俺摸”系列说到哪了? 对了,说到我们可以这么用PorkMockTest: public class LionHeadTest extends PorkMockTest { public void testHuoHou() { LionHead head = mock(LionHead.class); head.bite(); replay(); cook(head); // 忘记吧,忘记吧。忘记 ...
猪肉炖粉:“那啥,猪哥啊,这两天你身价大涨,发了吧?忙啥呢?” 一只猪:“可不是!到哪儿都被采访,这名猪也有隐私权滴!最近特想过普通猪的生活。这不,洗尽铅华,老老实实地躲圈里整Java呢” 话说这Java的一级摸客(EasyMock),老猪最近用的满多的。在Java 4里面不忍卒睹的代码在java 5里面骤然变得性感许多。不过用的多了,也发现有些不方便的地方。最不爽的就是:俺老猪不是粗心吗?有时候不小心就会忘了EasyMock.verify()或者IMocksControl#verify()。 这一忘了不打紧,有些bug就藏在那,测试也过了,但是bug也没找出来。 有很多淫说这还不容易?用 ...
印象中,Spring就象上个世纪的产品。不论使用方便性和代码设计都相当20世纪。有了Guice,Spring似乎应该逐渐退隐,被遗忘于江湖了。我最近这个项目就是在从Spring往Guice移植。大家都很高兴终于不用在这个即将失事的火车上挤着了。一个哥们在白板上用红笔大字写上:“用xml写配制半点好处也木有!”。 然后就看到了Spring JavaConfig。和这个火药贴: http://www.jroller.com/habuma/entry/guice_vs_spring_javaconfig_a 本来都对Spring失去兴趣了,不过看这么多人为之正名,于是就去看了一下。总的来说呢,眼 ...
2007-10-11

摹客测试蛛丝程序中的绑匪

关键字: 测试
为了响应伟大的“抵制中英文夹杂的资本主义不良思潮”运动,本文将全部用中文书写(代码暂时例外)。 最近工作需要,发现要写代码扩展“蛛丝”来实现一个春天遗留系统的移植。基本上就是围绕着春天的“应用上下文”和蛛丝的绑匪/模块来上下其手。 在测试的的时候,习惯性地选择用“简单摹客”来测试行为。摹客春天的应用上下文和豆子工厂真是简单啊: ListableBeanFactory beanFactory = mock(ListableBeanFactory.class); expect(beanFactory.getBeanDefinitions()).andReturn(beanNames); ...
ajoo
搜索本博客
最近加入圈子
存档
最新评论