state of an object in setUp() of junit TestCase
If I forget to define a tearDown() method ,will an object initialized
in setUp() maintain its state in between two test methods?
suppose I am testing a Stopwatch class
<code>
public class Stopwatch {
public long startTime=0;
public long stopTime=0;
boolean isrunning=false;
public void start(){
startTime=System.currentTimeMillis();
isrunning=true;
}
public void stop(){
if (isrunning) stopTime=System.currentTimeMillis();
isrunning=false;
}
public long getTotalDurationMilliSeconds(){
long duration=0;
if( isrunning){
duration=(System.currentTimeMillis()-startTime);
}
else{
duration=stopTime-startTime;
}
return duration;
}
public void reset(){
startTime=0;
stopTime=0;
isrunning=false;
}
public long getTotalDurationSeconds(){
long duration=0;
if( isrunning){
duration=((System.currentTimeMillis()-startTime)/1000);
}
else{
duration=(stopTime-startTime)/1000;
}
return duration;
}
}
</code>
I have a testcase like below,in which I have a setUp() but no
tearDown()
<code>
class StopwatchTest extends TestCase{
private Stopwatch watch;
public StopwatchTest(String name){
super(name);
}
public void setUp(){
watch=new Stopwatch();
}
private void sleepForSomeTime(long timeinmillisecs){
try{
System.out.println("sleeping for :"+(timeinmillisecs/1000)+"secs");
Thread.sleep(timeinmillisecs);
}catch(InterruptedException e){
}
}
public void testNormalOpButForgottToStop(){
watch.start();
sleepForSomeTime(3000);
//watch is not stopped;
assertEquals(3,watch.getTotalDurationSeconds());
}
public void testStoppedBeforeStart(){
System.out.println("timeduration:"+watch.getTotalDurationSeconds());
sleepForSomeTime(2000);
watch.stop();
System.out.println("timeduration:"+watch.getTotalDurationSeconds());
assertEquals(0,watch.getTotalDurationSeconds());
}
}
</code>
It seems that the watch is initialized each time before running the
test methods.Is this the expected behaviour?
regards,
jim