精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-28
不是。而是因为程序的执行过程中本来就要输出日志。现在的问题是要不要在单元测试阶段就测日志的内容。
pipilu 写道 楼主莫非是遇到一种情况:觉得单元测试不好写,于是想了个办法改为测日志输出?
真搞不懂了 |
|
返回顶楼 | |
发表时间:2009-04-28
日志输出是文本形式的,是不严格约束的东西,是给人看的,你如何让机器代码去测试?
String log = takeLogFromSomeWhere(); assertTrue(log.equals("add a user.....")) ???? |
|
返回顶楼 | |
发表时间:2009-04-28
最后修改:2009-04-28
chenjianjx 写道 不是。而是因为程序的执行过程中本来就要输出日志。现在的问题是要不要在单元测试阶段就测日志的内容。
pipilu 写道 楼主莫非是遇到一种情况:觉得单元测试不好写,于是想了个办法改为测日志输出?
真搞不懂了 噢。这样子啊。 之所以要有单元测试,是为了能尽早的发现问题,随时修正航向。 根据(落后的)瀑布模型,如果程序都开发完了,才进行测试,到时候才发现问题可能很不好改。更严重的,可能发现已经偏离轨道很远了(做的根本就不是想要的)。 从这个角度来说,日志内容方面的错误,等最后功能全开发完了再检查也不迟吧?需要特意花时间写单元测试来得到快速的反馈么?(而且这种单元测试对指导设计方面也没有什么帮助) |
|
返回顶楼 | |
发表时间:2009-04-28
一个小的批量操作模块,使用日志是很自然的事吧? 这个模块足够小,以致于我们可以对它进行单元测试。
针对它写单元测试类主要是为了将测试过程自动化,在反复修改代码或者重构时,这一点很重要,不是吗? pipilu 写道 chenjianjx 写道不是。而是因为程序的执行过程中本来就要输出日志。现在的问题是要不要在单元测试阶段就测日志的内容。 pipilu 写道楼主莫非是遇到一种情况:觉得单元测试不好写,于是想了个办法改为测日志输出? 真搞不懂了 噢。这样子啊。 之所以要有单元测试,是为了能尽早的发现问题,随时修正航向。 根据(落后的)瀑布模型,如果程序都开发完了,才进行测试,到时候才发现问题可能很不好改。更严重的,可能发现已经偏离轨道很远了(做的根本就不是想要的)。 从这个角度来说,日志内容方面的错误,等最后功能全开发完了再检查也不迟吧?需要特意花时间写单元测试来得到快速的反馈么?(而且这种单元测试对指导设计方面也没有什么帮助) |
|
返回顶楼 | |
发表时间:2009-04-28
在 MockLogger 里添加一个方法 boolean contains()
hatedance 写道 日志输出是文本形式的,是不严格约束的东西,是给人看的,你如何让机器代码去测试?String log = takeLogFromSomeWhere();assertTrue(log.equals("add a user....."))???? |
|
返回顶楼 | |
发表时间:2009-04-28
最后修改:2009-04-28
chenjianjx 写道 在 MockLogger 里添加一个方法 boolean contains()
hatedance 写道 日志输出是文本形式的,是不严格约束的东西,是给人看的,你如何让机器代码去测试?String log = takeLogFromSomeWhere();assertTrue(log.equals("add a user....."))???? 常常用正则方式去查找到指定的类名...或字串"error" |
|
返回顶楼 | |
发表时间:2009-04-28
wl95421 写道 Practical.API.Design.Confessions.of.a.Java.Framework.Architect
是APress出的 网上应该可以找到 不过作者的母语9成9不是英语 这本书我下载了,在亚马逊上看了一下评论,评价是相当的高啊,还被一个读者列为和《Effective Java》一样必读的两本书。非看不可了。 |
|
返回顶楼 | |
发表时间:2009-04-29
wl95421 写道 Practical.API.Design.Confessions.of.a.Java.Framework.Architect
是APress出的 网上应该可以找到 不过作者的母语9成9不是英语 晕。。。直接英文版?现在有中文版不?我也想看看。一直不了解NETBEANS,是不是我落伍了?呵呵。 |
|
返回顶楼 | |
发表时间:2009-04-29
最后修改:2009-04-29
昨天看了看书
发现log是可以测试的 而且有接口可以用.......(handler) 代码如下: import org.junit.Test; import java.util.logging.*; class MyLogHandler extends Handler{ private LogRecord record; @Override public void flush() { } @Override public void close() throws SecurityException { } public void publish(LogRecord record) { this.record = record; } public String getMessage() { return record.getMessage(); } } class MyTemp { static Logger logger = Logger.getLogger(MyTemp.class.getName()); public MyTemp(){ MyTemp.logger.info("abcdefg"); } } public class MyTest { @Test public void testLogMessage() { Handler h = new MyLogHandler(); MyTemp.logger.addHandler(h); MyTemp.logger.setLevel(Level.FINEST);// 这个设定最重要 MyTemp t = new MyTemp(); System.out.println(((MyLogHandler) h).getMessage()); } } 当然日志他只把最近的日志打出来... |
|
返回顶楼 | |
发表时间:2009-04-29
中文版本正在翻译中,估计是下半年出版。
不过感觉书对程序员水平有一定要求,估计销量可能会一般。 |
|
返回顶楼 | |