﻿<?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-上善若水-随笔分类-JUnit</title><link>http://www.blogjava.net/DLevin/category/54912.html</link><description>In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation.
To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra</description><language>zh-cn</language><lastBuildDate>Wed, 12 Aug 2015 15:21:56 GMT</lastBuildDate><pubDate>Wed, 12 Aug 2015 15:21:56 GMT</pubDate><ttl>60</ttl><item><title>JUnit中对Exception的判断</title><link>http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 02 Nov 2012 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/390684.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/390684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/390684.html</trackback:ping><description><![CDATA[说来惭愧，虽然之前已经看过JUnit的源码了，也写了几篇博客，但是长时间不写Test Case，今天想要写抛Exception相关的test case时，竟然不知道怎么写了。。。。。好记性不如烂笔头，记下来先～～<br /><br />对于使用验证Test Case方法中抛出的异常，我起初想到的是一种比较简单的方法，但是显得比较繁琐： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;@Test<br /><img id="Codehighlighter1_35_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_239_Open_Text.style.display='none'; Codehighlighter1_35_239_Closed_Image.style.display='inline'; Codehighlighter1_35_239_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_35_239_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_35_239_Closed_Text.style.display='none'; Codehighlighter1_35_239_Open_Image.style.display='inline'; Codehighlighter1_35_239_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;testOldStyle()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_35_239_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_35_239_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_43_199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_199_Open_Text.style.display='none'; Codehighlighter1_43_199_Closed_Image.style.display='inline'; Codehighlighter1_43_199_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_43_199_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_43_199_Closed_Text.style.display='none'; Codehighlighter1_43_199_Open_Image.style.display='inline'; Codehighlighter1_43_199_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_43_199_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_43_199_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Math.random();<br /><img id="Codehighlighter1_97_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_97_147_Open_Text.style.display='none'; Codehighlighter1_97_147_Closed_Image.style.display='inline'; Codehighlighter1_97_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_97_147_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_97_147_Closed_Text.style.display='none'; Codehighlighter1_97_147_Open_Image.style.display='inline'; Codehighlighter1_97_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(value&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0.5</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_97_147_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_97_147_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalStateException(</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.fail(</span><span style="color: #000000">"</span><span style="color: #000000">Expect&nbsp;IllegalStateException</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img id="Codehighlighter1_232_236_Open_Image" onclick="this.style.display='none'; Codehighlighter1_232_236_Open_Text.style.display='none'; Codehighlighter1_232_236_Closed_Image.style.display='inline'; Codehighlighter1_232_236_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_232_236_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_232_236_Closed_Text.style.display='none'; Codehighlighter1_232_236_Open_Image.style.display='inline'; Codehighlighter1_232_236_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(IllegalStateException&nbsp;e)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_232_236_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_232_236_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />Google了一下，找到另外几种更加方便的方法：１，使用Test注解中的expected字段判断抛出异常的类型。2，使用ExpectedException的Rule注解。<br />个人偏好用Test注解中的expected字段，它先的更加简洁，不管读起来还是写起来都很方便，并且一目了然：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;@Test(expected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;IllegalStateException.</span><span style="color: #0000ff">class</span><span style="color: #000000">)<br /><img id="Codehighlighter1_81_127_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_127_Open_Text.style.display='none'; Codehighlighter1_81_127_Closed_Image.style.display='inline'; Codehighlighter1_81_127_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_81_127_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_81_127_Closed_Text.style.display='none'; Codehighlighter1_81_127_Open_Image.style.display='inline'; Codehighlighter1_81_127_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;testThrowException()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_81_127_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_81_127_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalStateException(</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@Test(expected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;IllegalStateException.</span><span style="color: #0000ff">class</span><span style="color: #000000">)<br /><img id="Codehighlighter1_215_263_Open_Image" onclick="this.style.display='none'; Codehighlighter1_215_263_Open_Text.style.display='none'; Codehighlighter1_215_263_Closed_Image.style.display='inline'; Codehighlighter1_215_263_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_215_263_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_215_263_Closed_Text.style.display='none'; Codehighlighter1_215_263_Open_Image.style.display='inline'; Codehighlighter1_215_263_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;testNotThrowException()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_215_263_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_215_263_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">No&nbsp;Exception&nbsp;throws</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />对Rule注解的使用（只有在JUnit4.7以后才有这个功能），它提供了更加强大的功能，它可以同时检查异常类型以及异常消息内容，这些内容可以只包含其中的某些字符，ExpectedException还支持使用hamcrest中的Matcher，默认使用IsInstanceOf和StringContains Matcher。在BlockJUnit4ClassRunner的实现中，每一个Test Case运行时都会重新创建Test Class的实例，因而在使用ExpectedException这个Rule时，不用担心在多个Test Case之间相互影响的问题：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;@Rule<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;ExpectedException&nbsp;expectedException&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ExpectedException.none();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@Test<br /><img id="Codehighlighter1_136_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_136_242_Open_Text.style.display='none'; Codehighlighter1_136_242_Closed_Image.style.display='inline'; Codehighlighter1_136_242_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_136_242_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_136_242_Closed_Text.style.display='none'; Codehighlighter1_136_242_Open_Image.style.display='inline'; Codehighlighter1_136_242_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;testThrowExceptionWithRule()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_136_242_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_136_242_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expectedException.expect(IllegalStateException.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalStateException(</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@Test<br /><img id="Codehighlighter1_305_461_Open_Image" onclick="this.style.display='none'; Codehighlighter1_305_461_Open_Text.style.display='none'; Codehighlighter1_305_461_Closed_Image.style.display='inline'; Codehighlighter1_305_461_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" id="Codehighlighter1_305_461_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_305_461_Closed_Text.style.display='none'; Codehighlighter1_305_461_Open_Image.style.display='inline'; Codehighlighter1_305_461_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;testThrowExceptionAndMessageWithRule()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_305_461_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_305_461_Open_Text"><span style="color: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expectedException.expect(IllegalStateException.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expectedException.expectMessage(</span><span style="color: #000000">"</span><span style="color: #000000">fail</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalStateException(</span><span style="color: #000000">"expect fail</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />在stackoverflow中还有人提到了使用google-code中的catch-exception工程，今天没时间看了，回去好好研究一下。地址是：<a href="http://code.google.com/p/catch-exception/">http://code.google.com/p/catch-exception/</a><br /><br /><img src ="http://www.blogjava.net/DLevin/aggbug/390684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-11-02 15:02 <a href="http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入JUnit源码之Assert与Hamcrest</title><link>http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 11 May 2012 16:17:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/377960.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/377960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/377960.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次用文字的方式记录读源码的过程，不知道怎么写，感觉有点贴代码的嫌疑。不过中间还是加入了一些自己的理解和心得，希望以后能够慢慢的改进，感兴趣的童鞋凑合着看吧，感觉JUnit这个框架还是值得看的，里面有许多不错的设计思想在，更何况它是Kent Beck和Erich Gamma这样的大师写的。。。。。深入JUnit源码之Assert与Hamcrest  到目前，JUnit4所有的核心源码都已经讲解过了...&nbsp;&nbsp;<a href='http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html'>阅读全文</a><img src ="http://www.blogjava.net/DLevin/aggbug/377960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-05-12 00:17 <a href="http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入JUnit源码之Builder、Request与JUnitCore</title><link>http://www.blogjava.net/DLevin/archive/2012/05/12/377957.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 11 May 2012 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/05/12/377957.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/377957.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/05/12/377957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/377957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/377957.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次用文字的方式记录读源码的过程，不知道怎么写，感觉有点贴代码的嫌疑。不过中间还是加入了一些自己的理解和心得，希望以后能够慢慢的改进，感兴趣的童鞋凑合着看吧，感觉JUnit这个框架还是值得看的，里面有许多不错的设计思想在，更何况它是Kent Beck和Erich Gamma这样的大师写的。。。。。深入JUnit源码之Builder、Request与JUnitCore  经过前面三节的Runner、...&nbsp;&nbsp;<a href='http://www.blogjava.net/DLevin/archive/2012/05/12/377957.html'>阅读全文</a><img src ="http://www.blogjava.net/DLevin/aggbug/377957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-05-12 00:08 <a href="http://www.blogjava.net/DLevin/archive/2012/05/12/377957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入JUnit源码之Rule</title><link>http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 11 May 2012 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/377955.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/377955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/377955.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次用文字的方式记录读源码的过程，不知道怎么写，感觉有点贴代码的嫌疑。不过中间还是加入了一些自己的理解和心得，希望以后能够慢慢的改进，感兴趣的童鞋凑合着看吧，感觉JUnit这个框架还是值得看的，里面有许多不错的设计思想在，更何况它是Kent Beck和Erich Gamma这样的大师写的。。。。。深入JUnit源码之Rule  JUnit中的Rule是对@BeforeClass、@AfterCla...&nbsp;&nbsp;<a href='http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html'>阅读全文</a><img src ="http://www.blogjava.net/DLevin/aggbug/377955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-05-12 00:02 <a href="http://www.blogjava.net/DLevin/archive/2012/05/12/377955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入JUnit源码之Statement</title><link>http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 11 May 2012 15:53:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/377954.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/377954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/377954.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次用文字的方式记录读源码的过程，不知道怎么写，感觉有点贴代码的嫌疑。不过中间还是加入了一些自己的理解和心得，希望以后能够慢慢的改进，感兴趣的童鞋凑合着看吧，感觉JUnit这个框架还是值得看的，里面有许多不错的设计思想在，更何况它是Kent Beck和Erich Gamma这样的大师写的。。。。。深入JUnit源码之Statement  看JUnit源码最大的收获就是看到这个Statement的设...&nbsp;&nbsp;<a href='http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html'>阅读全文</a><img src ="http://www.blogjava.net/DLevin/aggbug/377954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-05-11 23:53 <a href="http://www.blogjava.net/DLevin/archive/2012/05/11/377954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入JUnit源码之Runner</title><link>http://www.blogjava.net/DLevin/archive/2012/05/11/377950.html</link><dc:creator>DLevin</dc:creator><author>DLevin</author><pubDate>Fri, 11 May 2012 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/DLevin/archive/2012/05/11/377950.html</guid><wfw:comment>http://www.blogjava.net/DLevin/comments/377950.html</wfw:comment><comments>http://www.blogjava.net/DLevin/archive/2012/05/11/377950.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/DLevin/comments/commentRss/377950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DLevin/services/trackbacks/377950.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初次用文字的方式记录读源码的过程，不知道怎么写，感觉有点贴代码的嫌疑。不过中间还是加入了一些自己的理解和心得，希望以后能够慢慢的改进，感兴趣的童鞋凑合着看吧，感觉JUnit这个框架还是值得看的，里面有许多不错的设计思想在，更何况它是Kent Beck和Erich Gamma这样的大师写的。。。。。写在前面的话  不知道是因为第一份工作的影响还是受在博客园上看到的那句&#8220;源代码里没有秘密&...&nbsp;&nbsp;<a href='http://www.blogjava.net/DLevin/archive/2012/05/11/377950.html'>阅读全文</a><img src ="http://www.blogjava.net/DLevin/aggbug/377950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DLevin/" target="_blank">DLevin</a> 2012-05-11 23:24 <a href="http://www.blogjava.net/DLevin/archive/2012/05/11/377950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>