We'll also closely examine two useful additions to the developer's toolkit:
TestCase that better supports tests in multiple threads
When faced with unit testing, many teams end up producing some kind of testing framework. JUnit, available as open source, eliminates this onerous task by providing a ready-made framework for unit testing. JUnit, best used as an integral part of a development testing regime, provides a mechanism that developers can use to consistently write and execute tests. So, what are the JUnit best practices?
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
}
}
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.
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 previous 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.
Very useful....By Anonymous on March 7, 2010, 2:00 pmYou have done a great job with this site. black onyx earrings
Reply | Read entire comment
JavaFX?By Anonymous on September 10, 2009, 1:32 amWhy would Google give JavaFX the spotlight when we already have Flex which is light years ahead of JavaFX?
Reply | Read entire comment
why won't Google let JavaBy Anonymous on February 24, 2009, 6:28 amwhy won't Google let Java have the RIA spotlight ever so briefly? Hot on the very flashy heels of the release of Java FX comes the understated (but still heavily...
Reply | Read entire comment
Global Suite Setup and TearDownBy Anonymous on November 1, 2008, 3:19 pmI have posted a way how to implement a global suite setup and teardown on my blog at: http://vladi-blog.blogspot.com/2008/11/suite-setup-for-selenium-or-junit-tests.html
Reply | Read entire comment
View all comments