Hi,
 On Mon, Jun 29, 2009 at 3:52 PM, Vincent Massol <vincent(a)massol.net>
 wrote:
 On Jun 29, 2009, at 12:05 PM, Asiri Rathnayake wrote:
  Hi,
  May be override the tearDown() method and cleanup
the file? But I'm
> not sure
> if this is possible with the way rendering tests are done.
 No, no.
 There are 2 options:
 - Best: Do not create an image. Just verify that jfreechart is
 called
 and verify where it would create the image . To be done with some
 mocks.
 - Not as good: pass the location from the pom.xml. Actually it's
 already passed by surefire so you just need to retrieve it as a
 system
 property. 
 Fixed by using "java.io.tmpdir" system property. 
 This is bad. For several reasons:
 1) This is a unit test and it doesn't need to prove that jfreechart
 works
 2) Any application that creates files a bit everywhere are very bad.
 Even if you added a remove on shutdown hook it would still be bad
 since if the application was killed there would be leftovers.
 3) It's easy for a unit test to control what happens and use mocks
 where need be. It also improves the code design in general.
 
 It's not the ChartGenerator that generates the chart image file.
 ChartGenerator returns a byte[] which represents the chart. It's the
 ChartMacro which writes out the chart image file.
 I can avoid this problem by:
 1. Declaring the chart image file generation method (generateChart)
 abstract
 in ChartMacro
 2. Extending the ChartMacro with TestChartMacro (already done)
 3. Overriding the generateChart method in ChartMacro and avoiding
 the chart
 image file being written to disk.
 This will work fine and no files will be written on disk. I refused
 to do
 this because we wil be marking generateChart() method as abstract
 only to
 make it easy for us to write test cases.
 
What you need is a class for storing images. A default implementation
would store in a temporary location on the file system. Another
implementation could store in memory or in a DB or...
You'd then use a dynamic mock implementation for the test which does
nothing.
-Vincent