<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7839093</id><updated>2011-11-27T16:14:24.799-08:00</updated><category term='JUnit'/><category term='Java'/><title type='text'>Out Of Memory</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://premanand.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7839093/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://premanand.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Premanand C</name><uri>http://www.blogger.com/profile/12739341623236360127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7839093.post-116324819174091221</id><published>2006-11-11T03:13:00.000-08:00</published><updated>2006-11-15T07:36:07.801-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JUnit'/><title type='text'>Throwing exceptions from setUp in JUnit tests</title><content type='html'>&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; makes use of the template method pattern when running tests, i.e. if we have a test like below:&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;&amp;quot;&amp;quot;;"&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: navy;"&gt;public class&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; MyTest &lt;b&gt;&lt;span style="color: navy;"&gt;extends&lt;/span&gt;&lt;/b&gt; TestCase {&lt;br /&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 0);"&gt;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt; protected void&lt;/span&gt; setUp() &lt;span style="color: navy;"&gt;throws&lt;/span&gt; Exception {&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&lt;/span&gt;.setUp();&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;b&gt;&lt;i&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.println("MyTest.setUp");&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt; testInvocationSequence () &lt;span style="color: navy;"&gt;throws&lt;/span&gt; Exception {&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;b&gt;&lt;i&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.println(&lt;b&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"MyTest.test"&lt;/span&gt;&lt;/b&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(102, 102, 0); font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt; protected void&lt;/span&gt; tearDown() &lt;span style="color: rgb(0, 0, 153);"&gt;throws &lt;/span&gt;Exception {&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;b&gt;&lt;i&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.println("MyTest.tearDown");&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&lt;/span&gt;&lt;/b&gt;.tearDown();&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;&amp;quot;&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;On the console we see:&lt;o:p style="font-family: courier new;"&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;u1:p style="font-family: courier new;"&gt;&lt;/u1:p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;MyTest.setUp&lt;br /&gt;&lt;u1:p&gt;&lt;/u1:p&gt;MyTest.testInvocationSequence&lt;br /&gt;&lt;u1:p&gt;&lt;/u1:p&gt;MyTest.tearDown&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;u1:p&gt;&lt;/u1:p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;confirming that the sequence of test invocation is the setUp method first, then the test itself and finally the tearDown method.&lt;br /&gt;&lt;br /&gt;Let's make this slightly more interesting. What happens when the test method throws an exception?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: navy;"&gt;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; testInvocationSequence () &lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;throws&lt;/span&gt;&lt;/b&gt; Exception {&lt;br /&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;b&gt;&lt;i&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.println(&lt;b&gt;&lt;span style="color: green;"&gt;"MyTest.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: green;"&gt;testInvocationSequence&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new&lt;/span&gt; Exception(&lt;b&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"testing the JUnit test execution sequence"&lt;/span&gt;&lt;/b&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;&amp;quot;&amp;quot;;"&gt;&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;u1:p&gt;&lt;/u1:p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;On the console we still see:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;u1:p&gt;&lt;/u1:p&gt;MyTest.setUp&lt;br /&gt;&lt;u1:p&gt;&lt;/u1:p&gt;MyTest.testInvocationSequence&lt;br /&gt; &lt;u1:p style="font-family: courier new;"&gt;&lt;/u1:p&gt;&lt;span style="font-family: courier new;"&gt;MyTest.tearDown&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; color: maroon; font-family: courier new;"&gt;java.lang.Exception: testing the JUnit test invocation sequence!&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;u1:p&gt;&lt;/u1:p&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;But this time the test fails. The important thing to note here is that tearDown is called despite the fact that test execution ended abruptly. This makes it safe to initialize expensive resources in the setUp method and free them in the tearDown method. For instance, one might open a database connection in the setUp method and close it in the tearDown method.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;u1:p&gt;&lt;/u1:p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;br /&gt;&lt;u1:p&gt;&lt;/u1:p&gt;However, what happens if the setUp method itself fails?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 0);"&gt;&amp;nbsp;&amp;nbsp;@Override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt; protected void&lt;/span&gt; setUp() &lt;span style="color: navy;"&gt;throws&lt;/span&gt; Exception {&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&lt;/span&gt;.setUp();&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;b&gt;&lt;i&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.println("MyTest.setUp");&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new&lt;/span&gt; Exception(&lt;b&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"testing the JUnit test execution sequence"&lt;/span&gt;&lt;/b&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;The output on the console is interesting:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;MyTest.setUp&lt;br /&gt;&lt;u1:p style="font-family: courier new;"&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: maroon; font-family: courier new;"&gt;java.lang.Exception: testing the JUnit test invocation sequence!&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: courier new;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;u1:p style="font-family: courier new;"&gt;&lt;/u1:p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;The test method (predictably) and the tearDown (strangely?) did not get invoked! If this failure in the setUp method happens after the expensive resource is initialized we will end up leaking resources. A quick look at the &lt;span style="font-family: courier new;"&gt;runBare&lt;/span&gt; method in the &lt;span style="font-family: courier new;"&gt;TestCase &lt;/span&gt;class helps clarify how things work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt; runBare() &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;throws&lt;/span&gt; Throwable {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                              &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Throwable exception = &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;null&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setUp();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;runTest();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;span style="color: rgb(0, 0, 153);"&gt;catch&lt;/span&gt; (Throwable running) {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception = running;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;} &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;finally&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tearDown();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;catch&lt;/span&gt; (Throwable tearingDown) {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/span&gt; (exception == &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;null&lt;/span&gt;) exception = tearingDown;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;if&lt;/span&gt; (exception != &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;null&lt;/span&gt;) &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;throw&lt;/span&gt; exception;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;The important thing to note here is that the &lt;span style="font-weight: bold; font-family: courier new;"&gt;setUp&lt;/span&gt; method is invoked &lt;span style="font-weight: bold; font-style: italic;"&gt;outside &lt;/span&gt;the &lt;span style="font-family: courier new;"&gt;&lt;/span&gt; try block. If the setUp method fails, neither the test, nor the &lt;span style="font-weight: bold; font-family: courier new;"&gt;tearDown&lt;/span&gt; are going to be invoked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;How does one reliably initialize expensive resources and free them when the test ends? Some JUnit enthusiasts may argue that tests requiring expensive resources should not be part of a test suite and should be written using another tool. Sometimes, this is just not an option. For such cases, one might override the &lt;span style="font-family: courier new; font-weight: bold;"&gt;runBare()&lt;/span&gt; method itself as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 0);"&gt;@Override&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;public void&lt;/span&gt; runBare() &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;throws&lt;/span&gt; Throwable {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;try&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Initialize expensive resource&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&lt;/span&gt;.runBare();&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;} &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;finally&lt;/span&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Free expensive resource&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7839093-116324819174091221?l=premanand.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://premanand.blogspot.com/feeds/116324819174091221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7839093&amp;postID=116324819174091221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7839093/posts/default/116324819174091221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7839093/posts/default/116324819174091221'/><link rel='alternate' type='text/html' href='http://premanand.blogspot.com/2006/11/throwing-exceptions-from-setup-in.html' title='Throwing exceptions from setUp in JUnit tests'/><author><name>Premanand C</name><uri>http://www.blogger.com/profile/12739341623236360127</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
