锁定老帖子 主题:吹弹得破是重回一人犯错,全家光荣的老路
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-04-20
江南白衣 写道 gigix 写道 请避免一概而论。这“一个文件”,要分应用的内部文件还是外部文件,是应用的一部分还是业务的一部分。如果是应用程序本身出了错,尽早发现尽早修复是我能想到的最好办法。这是你现有功能中的bug,你为什么要想把它掩盖起来? 问题关键就是, 这不是我现有功能中的bug啊, 是隔壁那条友的模块的,为什么就让我什么都做不了了呢。 虽然可以把那条友的application-context-AAA.xml干掉,但如果还有第2个文件引用了这个文件里定义的bean,spring找不到时又不会注入一个null,而是又报错,停止启动.... 所以我还是觉得集成测试的时机可以由用户选择,而不是在每次编译的时候。 这是你们正在工作的软件的bug。难道隔壁那家伙犯错导致项目不能交付,你就不要陪着他加班么? “集成测试的时机可以由用户选择”,没错的,Spring的配置出错也不会影响你编译和run unit test cases亚。但集成测试的最好时机是什么?我认为就是每次check-in的时候。再拖得久了,修补bug的成本无可避免地会提高。 |
|
返回顶楼 | |
发表时间:2006-04-20
江南白衣 写道 所以我还是觉得集成测试的时机可以由用户选择,而不是在每次编译的时候。 持续集成要的就是每次提交后都能跑测试,才能及早发现问题。 如果可能的话,最好这样做: 提交后运行基本测试,检查配置等基本环境。避免掉简单的错误导致整个编译测试的失败。 在一定时间段,运行更复杂的测试,测试整个环境,以发现难以发现的问题。(可以晚上下班后,所谓nightly) cruisecontrol 啊 cruisecontrol 。 突然觉得是不是应该设立测试规划工程师这个职位,嘿嘿。 |
|
返回顶楼 | |
发表时间:2006-04-20
gigix 写道 这是你们正在工作的软件的bug。难道隔壁那家伙犯错导致项目不能交付,你就不要陪着他加班么?
问题是软件离交付还有一年零三个月阿,他现在就要我陪着不能启动了。 算了,这话题 close掉算了,继续也讨论不出什么来。 除非我们这里有人可以直达天听,建议老rod把这个处理方式搞成可选的。 |
|
返回顶楼 | |
发表时间:2006-04-20
江南白衣 写道 gigix 写道 这是你们正在工作的软件的bug。难道隔壁那家伙犯错导致项目不能交付,你就不要陪着他加班么?
问题是软件离交付还有一年零三个月阿,他现在就要我陪着不能启动了。 算了,这话题 close掉算了,继续也讨论不出什么来。 除非我们这里有人可以直达天听,建议老rod把这个处理方式搞成可选的。 不如去springframework的mailinglist讨论,看老棒子怎么回答亚。 |
|
返回顶楼 | |
发表时间:2006-04-20
gigix 写道 “集成测试的时机可以由用户选择”,没错的,Spring的配置出错也不会影响你编译和run unit test cases亚。
绝对影响unit test!!!!!, 因为我们的TestCase基类是load all application-context-*.xml的,除非你很仔细的为每个test case指定用到的所有application-context-xxxx.xml, 而且隔壁那条友没把一些main的applicaiton-context弄错。 |
|
返回顶楼 | |
发表时间:2006-04-20
江南白衣 写道 gigix 写道 “集成测试的时机可以由用户选择”,没错的,Spring的配置出错也不会影响你编译和run unit test cases亚。
绝对影响unit test!!!!!, 因为我们的TestCase基类是load all application-context-*.xml的,除非你很仔细的为每个test case指定用到的所有application-context-xxxx.xml, 而且隔壁那条友没把一些main的applicaiton-context弄错。 …… 略微有点无语……白衣亚白衣,你让我略微有些失望亚…… |
|
返回顶楼 | |
发表时间:2006-04-20
为了透明的失望,查了下appfuse的代码,结果大家都是这么做的,不要这么苛求嘛。
public abstract class BaseDaoTestCase { protected String[] getConfigLocations(); { setAutowireMode(AUTOWIRE_BY_NAME);; return new String [] {"classpath*:/**/dao/applicationContext-*.xml", "classpath*:META-INF/applicationContext-*.xml"}; } } |
|
返回顶楼 | |
发表时间:2006-04-20
江南白衣 写道 gigix 写道 “集成测试的时机可以由用户选择”,没错的,Spring的配置出错也不会影响你编译和run unit test cases亚。
绝对影响unit test!!!!!, 因为我们的TestCase基类是load all application-context-*.xml的,除非你很仔细的为每个test case指定用到的所有application-context-xxxx.xml, 而且隔壁那条友没把一些main的applicaiton-context弄错。 你这不叫做unit test,叫做集成测试。单元测试是不初始化spring容器滴~ 有空不妨学学easymock吧。 |
|
返回顶楼 | |
发表时间:2006-04-20
江南白衣 写道 为了透明的失望,查了下appfuse的代码,结果大家都是这么做的,不要这么苛求嘛。
public abstract class BaseDaoTestCase { protected String[] getConfigLocations(); { setAutowireMode(AUTOWIRE_BY_NAME);; return new String [] {"classpath*:/**/dao/applicationContext-*.xml", "classpath*:META-INF/applicationContext-*.xml"}; } } 不是苛求。只不过,你明明可以改得更decouple一些,然后你的问题也解决了,那干吗不改进呢? |
|
返回顶楼 | |
发表时间:2006-04-20
gigix 写道 请避免一概而论。这“一个文件”,要分应用的内部文件还是外部文件,是应用的一部分还是业务的一部分。如果是应用程序本身出了错,尽早发现尽早修复是我能想到的最好办法。这是你现有功能中的bug,你为什么要想把它掩盖起来? 另外,我很反对随便打比方。为了证明打比方的随意性和无价值,我也给你打个比方。比如说你出门之前就要检查机票身份证手机钱包笔记本行李箱是不是都带好了,要是走到机场再检查发现没带机票,最起码你得麻烦,更大的可能性是要误飞机。 我的比方考虑了同步性质,但你的没有。你的是单线作业,只是一个模块。我们讨论的是多个模块并存的状况。 其实这个人出门之后他可能做多件事,最后才是去机场。难道因为他到了机场才发现没带机票不能上飞机,就不能做其他事情了?他还是可以在车上电话订束玫瑰给女朋友。再跟生意伙伴通电话,顺便用PDA订好日程,这些都不影响嘛。 就象搂主所说的一样:甲犯的错误,为什么要乙一起跟着受罪? 一个模块错误,就报错好了,但其他模块还可以继续运行。这并不冲突。 |
|
返回顶楼 | |