Information on JUnit4
- successor to most widely used unit-testing framework for Java, JUnit3
- under active development (last JUnit3 release 3.8.2 2006-03-03)
- JUnit 4 released 2006-02-16
- 4.1 2006-04-27
- 4.2 2006-11-16
- 4.3 2006-11-16
- 4.4 (current as of 071204) 2007-07-18
- based on Java 5 features:
- no longer need to extend class TestCase
- test-method names do not have to start with the prefix test
- mark your test method with a @Test annotation
- use static import's to get assert methods (instead of via inheritance)
import junit.framework.TestCase;
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest extends TestCase {
@Test
public void testadd() {
....
assertEquals(4, calculator.add( 1, 3 ));
}
}
- improved test lifecycle management:
- setUp() and tearDown() replaced with @Before and @After annotations (allows for multiple @Before/@After methods)
public class CalculatorTest {
@Before
public void prepareTestData() { ... }
@Before
public void setupMocks() { ... }
@After
public void cleanupTestData() { ... }
}
- improved fixture lifecycle management:
import junit.framework.*;
import junit.extensions.TestSetup;
public class AllTestsOneTimeSetup {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(SomeTest.suite());
suite.addTest(AnotherTest.suite());
TestSetup wrapper = new TestSetup(suite) {
protected void setUp() {
oneTimeSetUp();
}
protected void tearDown() {
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp() {
// one-time initialization code
}
public static void oneTimeTearDown() {
// one-time cleanup code
}
}