记得以前曾经和一个tw出来的老兄一起共事过一小段时间。当时问他们组的测试情况,据说都是100%的覆盖率。说实话,心里挺惊讶的。
我不是一个懒于写测试的人。实际上,通过是否便于测试来判断一段代码的设计优劣已经几乎是本能了。可是,我发现连九成的覆盖率对我来说都是几乎难以企及的目标。
你的代码不管怎么重构,总有那么一些角落要连数据库,写文件,从信用卡里面划钱这些恶心吧唧的东西吧?这些应该都可以集成测试,但是单元测试我基本上就是绕过了。
这也罢了。那些java bean的getter/setter你难道也要测?一行的throw new UnsupportedOperationException( ...
今天同事和我讨论他遇到的一个问题。具体要求是这样的,在运行时,我们会从模块G得到一个Map,这个Map里面都是一些字符串对,你可以理解成一个字典,有字符串的key和字符串的value。简短节说,就是
Map<String, String>
非常非常复杂深奥。
好,现在我们事先知道要从这个map里读取一些数据点,比如:id, name, sex等等。
对id,我们知道读出来的是int;对name,是string;对sex,应该对应一个叫Gender的enum类型。
这就涉及一个自动类型转换的问题。我们希望不用对每个数据点做手工类型转换。
另外一个需求,一些数据点是有缺省值的。比如n ...
哎,一到下雪我就头疼。又得推着扫雪机吭哧吭哧扫雪。就说是三月学雷锋树新风,也不能总这样啊。妈的,还是住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
...
猪肉炖粉:“那啥,猪哥啊,这两天你身价大涨,发了吧?忙啥呢?”
一只猪:“可不是!到哪儿都被采访,这名猪也有隐私权滴!最近特想过普通猪的生活。这不,洗尽铅华,老老实实地躲圈里整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失去兴趣了,不过看这么多人为之正名,于是就去看了一下。总的来说呢,眼 ...
为了响应伟大的“抵制中英文夹杂的资本主义不良思潮”运动,本文将全部用中文书写(代码暂时例外)。
最近工作需要,发现要写代码扩展“蛛丝”来实现一个春天遗留系统的移植。基本上就是围绕着春天的“应用上下文”和蛛丝的绑匪/模块来上下其手。
在测试的的时候,习惯性地选择用“简单摹客”来测试行为。摹客春天的应用上下文和豆子工厂真是简单啊:
ListableBeanFactory beanFactory = mock(ListableBeanFactory.class);
expect(beanFactory.getBeanDefinitions()).andReturn(beanNames);
...
好象貌似有本书是用写一个JUnit作为例子来讲解TDD的。要说TDD绝对是个好东西,不过TDD本身并不能保证搞出好软件。这不,Junit就是个活生生的例子呀。
一直以来,我写Junit+Easymock测试都是这么来的:
public class SomeTest extends TestCase {
private final IMocksControl control = EasyMock.createStrictControl();
private final Connection connection = control.createMock(Connection ...
- 浏览: 179866 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
动态properties转换
恩,不错,method.getReturnType 都用上了。动态代理的价值全被 ...
-- by upyaya -
动态properties转换
apache beanutils中 dwr中 jsf myfaces中 都有基 ...
-- by kimmking -
动态properties转换
签名,泛型,代理 都是自己平时很少用到的,运行一下,学习一下
-- by soleghost -
动态properties转换
呵呵,精益求精啊,不过有个地方参数顺序好像错了: public final c ...
-- by racnow -
动态properties转换
感觉可以参考spring里面的类型转换吧,它好像用的是java的Property ...
-- by yufu






评论排行榜