只显示主题贴
记得以前曾经和一个tw出来的老兄一起共事过一小段时间。当时问他们组的测试情况,据说都是100%的覆盖率。说实话,心里挺惊讶的。
我不是一个懒于写测试的人。实际上,通过是否便于测试来判断一段代码的设计优劣已经几乎是本能了。可是,我发现连九成的覆盖率对我来说都是几乎难以企及的目标。
你的代码不管怎么重构,总有那么一些角落要连数据库,写文件,从信用卡里面划钱这些恶心吧唧的东西吧?这些应该都可以集成测试,但是单元测试我基本上就是绕过了。
这也罢了。那些java bean的getter/setter你难道也要测?一行的throw new UnsupportedOperationException( ...
- 进入论坛 Java 版
今天同事和我讨论他遇到的一个问题。具体要求是这样的,在运行时,我们会从模块G得到一个Map,这个Map里面都是一些字符串对,你可以理解成一个字典,有字符串的key和字符串的value。简短节说,就是
Map<String, String>
非常非常复杂深奥。
好,现在我们事先知道要从这个map里读取一些数据点,比如:id, name, sex等等。
对id,我们知道读出来的是int;对name,是string;对sex,应该对应一个叫Gender的enum类型。
这就涉及一个自动类型转换的问题。我们希望不用对每个数据点做手工类型转换。
另外一个需求,一些数据点是有缺省值的。比如n ...
- 进入论坛 Java 版
那啥?刚才说到哪了?“如云朵般的呵护”?下面谁说的?给我拉出去好好“呵护呵护”!
人家没那么说啦!讨厌!是刚才广告里说的嘛!我说刚才我们“俺摸”系列说到哪了?
对了,说到我们可以这么用PorkMockTest:
public class LionHeadTest extends PorkMockTest {
public void testHuoHou() {
LionHead head = mock(LionHead.class);
head.bite();
replay();
cook(head);
// 忘记吧,忘记吧。忘记 ...
- 进入论坛 Java 版
猪肉炖粉:“那啥,猪哥啊,这两天你身价大涨,发了吧?忙啥呢?”
一只猪:“可不是!到哪儿都被采访,这名猪也有隐私权滴!最近特想过普通猪的生活。这不,洗尽铅华,老老实实地躲圈里整Java呢”
话说这Java的一级摸客(EasyMock),老猪最近用的满多的。在Java 4里面不忍卒睹的代码在java 5里面骤然变得性感许多。不过用的多了,也发现有些不方便的地方。最不爽的就是:俺老猪不是粗心吗?有时候不小心就会忘了EasyMock.verify()或者IMocksControl#verify()。
这一忘了不打紧,有些bug就藏在那,测试也过了,但是bug也没找出来。
有很多淫说这还不容易?用 ...
- 进入论坛 Java 版
印象中,Spring就象上个世纪的产品。不论使用方便性和代码设计都相当20世纪。有了Guice,Spring似乎应该逐渐退隐,被遗忘于江湖了。我最近这个项目就是在从Spring往Guice移植。大家都很高兴终于不用在这个即将失事的火车上挤着了。一个哥们在白板上用红笔大字写上:“用xml写配制半点好处也木有!”。
然后就看到了Spring JavaConfig。和这个火药贴:
http://www.jroller.com/habuma/entry/guice_vs_spring_javaconfig_a
本来都对Spring失去兴趣了,不过看这么多人为之正名,于是就去看了一下。总的来说呢,眼 ...
- 进入论坛 Java 版
公司的一个大系统的持久层一直是直接使用jdbc。在jdbc的基础上,又自制了一个简陋的cache。
每个持久功能的实现都比较类似,大致相当于这样:
MyProprietaryConnection conn = ConnectionManager.checkOut(Database.DB_NAME);
try {
PreparedStatement stmt = conn.getPreparedStatement("some statement id, identifying a sql statement in an xml file");
stmt.setString(1 ...
- 进入论坛 Java 版
问题是这样的。
一个MyService类里面,有一个MyResponse runService()函数。这个runService函数会调用一个web service来得到MyResponse对象。这个MyResponse对象在runService()函数中被缓存,然后返回。
现在的目标是,在runService返回以前,先把MyResponse clone一下,然后如果MyResponse.getCensus().getSalary()返回的带有几毛几分的零钱,就把这个salary truncate成整数。
需求不难,一个直观的解决方案是:
java 代码
&nb ...
- 进入论坛 Java 版
这里讲述的是一个非常让人尴尬的故事
我们有一个简单的java类:
class Details {
double getBalance();
double getFixed();
double getVariable();
double getSpendDown();
...
//各种getter以及其他相关的逻辑
}
现在业务逻辑需要对一些property做求和操作,求overallBalance, overallFixed之类的。
没什么了不起的,一个for循环分分钟搞定:
static double getOverallBalance( ...
- 进入论坛 Java 版
场景一:
个人喜欢state-based的单元测试。(定义见mock is not stub)。
可是有些时候,比如在测试一些使用java.sql.Connection, ibatis SqlMapClient等接口的类的时候,明显写stub很不好。(1,接口很大,有很多不相干的东西。2,版本一旦变化,这些接口可能跟着变化,如果写stub的话,就意味着stub要跟着这些第三方接口变化)
于是,只好mock。只好interaction based。只好每回内部实现一变就死盯着一坨坨的expectAndReturn找不再有效的expectation。
场景二:
一个遗留系统用自己的连接池 ...
- 进入论坛 Java 版
我们现在经手的这个系统,有这么一个非常非常核心的类:
ImplFactory。它有一个非常非常核心的方法:
ImplFactory.newClass(Class type, Object[] args);
这个方法什么意思呢?基本上和调用new type(arg1, arg2, ...)差不多。只不过是动态的,类型不安全的。
为什么要这么做呢?其本意是,后面有一个ImplFactory.properties文件,当调用newClass(MyType.class, new Object[]{a,b,c})的时候,ImplFactory会先检查ImplFactory.properties,如果 ...
- 进入论坛 Java 版
- 浏览: 179865 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
动态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






评论排行榜