Programming

Tips on setting up a Junit test case

Do not use the test-case constructor to
set up a test case [Junit]

 

Context:

 

Setting up a test case in the
constructor is not a good idea.

Consider:

public class SomeTest extends TestCase

   public SomeTest (String
testName) {

      super
(testName);

      //
Perform test set-up

   }

}

 

Issue :

Imagine that while performing the setup,
the setup code throws an IllegalStateException. In response, JUnit would throw
an AssertionFailedError, indicating that the test case could not be
instantiated.

Here is an example of the resulting
stack trace:

junit.framework.AssertionFailedError:
Cannot instantiate test case: test1       at

junit.framework.Assert.fail(Assert.java:143)    
at

junit.framework.TestSuite.runTest(TestSuite.java:178) 
at

junit.framework.TestCase.runBare(TestCase.java:129)     
at

junit.framework.TestResult.protect(TestResult.java:100)       
at

junit.framework.TestResult.runProtected(TestResult.java:117)    
at

junit.framework.TestResult.run(TestResult.java:103)     
at

junit.framework.TestCase.run(TestCase.java:120) 
at

junit.framework.TestSuite.run(TestSuite.java,
Compiled Code)     at

junit.ui.TestRunner2.run(TestRunner.java:429)

 

This stack trace proves rather
uninformative; it only indicates that the test case could not be instantiated.
It doesn’t detail the original error’s location or place of origin. This lack
of information makes it hard to deduce the exception’s underlying cause.

 

Tip :

Instead of setting up the data in the
constructor, perform test setup by overriding setUp(). Any exception thrown
within setUp() is reported correctly. Compare this stack trace with the above
example:

java.lang.IllegalStateException:
Oops     at bp.DTC.setUp(DTC.java:34)   at

junit.framework.TestCase.runBare(TestCase.java:127)     
at

junit.framework.TestResult.protect(TestResult.java:100)       
at

junit.framework.TestResult.runProtected(TestResult.java:117)    
at

junit.framework.TestResult.run(TestResult.java:103)

This stack trace is much more
informative; it shows which exception was thrown (IllegalStateException) and
from where. That makes it far easier to explain the test setup’s failure.

 

Comments

comments

HTML Snippets Powered By : XYZScripts.com
%d bloggers like this: