﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Kevin's Java Life-文章分类-单元测试</title><link>http://www.blogjava.net/Kevin/category/1630.html</link><description>    喝一杯咖啡，生活变得从容和清新</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 02:34:29 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 02:34:29 GMT</pubDate><ttl>60</ttl><item><title>关于mock object的使用</title><link>http://www.blogjava.net/Kevin/articles/6104.html</link><dc:creator>Kevin</dc:creator><author>Kevin</author><pubDate>Tue, 14 Jun 2005 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/Kevin/articles/6104.html</guid><wfw:comment>http://www.blogjava.net/Kevin/comments/6104.html</wfw:comment><comments>http://www.blogjava.net/Kevin/articles/6104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Kevin/comments/commentRss/6104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Kevin/services/trackbacks/6104.html</trackback:ping><description><![CDATA[今天看到一篇日志<A href="http://iseeisee.blogdriver.com/iseeisee/115784.html">最好不要滥用mock对象</A>，谈到了mock object时造成测试代码的难以维护，以及这样一个观点：单元测试应尽量避免白盒测试，而使用黑盒测试。<BR><BR>对于测试代码的维护问题，我目前尚未大量使用unit test，没有什么体会，就目前而言，我觉得使用mock object还是比较简单的，代码也很清晰，应该没有维护之虞。<BR><BR>对于“单元测试应尽量避免白盒测试，而使用黑盒测试”，我有点疑惑了，如果单元测试不使用白盒测试，那么什么样的测试才能使用白盒测试呢？什么时候才能使用白盒测试呢？单元测试把测试范围局限在一个功能单元之内了，应该说是最细的粒度了，此时应该是测试业务逻辑最好的时候啊。文章把Rod Johnson给搬出来了，回去我再查查Rod Johnson的Expert One-on-One看看。<BR><BR>关于什么时候该使用mock object，以下观点不错：<BR>使用Mock&nbsp;Object的场合&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际对象的行为还不确定。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际的对象创建和初始化非常复杂。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际对象中存在很难执行到的行为(如网络异常，数据库异常等)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际的对象运行起来非常的慢。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际对象是用户界面程序。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实际对象还没有编写，只有接口等。<img src ="http://www.blogjava.net/Kevin/aggbug/6104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Kevin/" target="_blank">Kevin</a> 2005-06-14 11:47 <a href="http://www.blogjava.net/Kevin/articles/6104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>『摘抄』Junit最佳实践</title><link>http://www.blogjava.net/Kevin/articles/5701.html</link><dc:creator>Kevin</dc:creator><author>Kevin</author><pubDate>Tue, 07 Jun 2005 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/Kevin/articles/5701.html</guid><wfw:comment>http://www.blogjava.net/Kevin/comments/5701.html</wfw:comment><comments>http://www.blogjava.net/Kevin/articles/5701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Kevin/comments/commentRss/5701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Kevin/services/trackbacks/5701.html</trackback:ping><description><![CDATA[<P><FONT size=2>１．<STRONG>检验测试在应当失败的时候失败<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总记得检验你写的测试是否能够正常工作，这是良好的习惯。确信当你预期它失败时测试会失败。如果你正在使用测试驱动开发（TDD）的方法，那么失败是经常发生的。<BR><BR><STRONG>２．为没有实现的方法抛出异常<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</STRONG>当你编写代码的时候，会经常想在没有实现所有方法之前之行代码。举例来说，如果你正在为一个接口写mock objects，并且你要测试的代码只使用一个方法，你就不需要模拟所有的方法。一个好习惯是抛出异常而不是返回空值（或者因为方法没有返回值而不返回任何值）。有两个好的理由：这样子做可以让任何读代码的人都清楚地知道这些方法还没有实现，并且可以确保如果方法被调用，它将会抛出异常，从而避免将骨架行为误认为是真正的行为。</FONT></P><img src ="http://www.blogjava.net/Kevin/aggbug/5701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Kevin/" target="_blank">Kevin</a> 2005-06-07 17:33 <a href="http://www.blogjava.net/Kevin/articles/5701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>