# Replace JUnit 3 Test Cases
# Description
This rule migrates JUnit 3 tests to either JUnit Jupiter or JUnit 4 depending on the most up-to-date JUnit version available in the classpath. The migration is achieved by:
- inserting the annotations to the test cases and life cycle methods accordingly
- inserting the correct import statements to the assertions or assumptions
- removing the extension to the JUnit 3 TestCase class
- and removing the main methods that used to serve as entry points for executing tests.
The migration of a test class is atomic, i.e., either all test cases and life cycle methods within the test class are migrated or the class is left intact.
Requirements
This rule requires either of the following libraries to be present:
- JUnit 4
- JUnit Jupiter
# Benefits
Migrates JUnit 3 tests.
# Tags
# Code Changes
# Migrate to JUnit 4
Pre
import junit.framework.TestCase;
public class ReplaceJUnit3TestCasesWithJUnit4Rule extends TestCase {
@Override
protected void setUp() {
}
@Override
protected void tearDown() {
}
public void test() throws Exception {
assertEquals(0x7fffffff, Integer.MAX_VALUE);
}
public void testAssertEqualsWithMessage() throws Exception {
assertEquals("Expected to be {0x7fffffff}.", 0x7fffffff, Integer.MAX_VALUE);
}
public static void main(String[] args) {
TestRunner.run(ReplaceJUnit3TestCasesWithJUnit4Rule.class);
}
}
Post
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Test;
import org.junit.Before;
public class ReplaceJUnit3TestCasesWithJUnit4Rule {
@Before
protected void setUp() {
}
@After
protected void tearDown() {
}
@Test
public void test() throws Exception {
assertEquals(0x7fffffff, Integer.MAX_VALUE);
}
@Test
public void testAssertEqualsWithMessage() throws Exception {
assertEquals("Expected to be {0x7fffffff}.", 0x7fffffff, Integer.MAX_VALUE);
}
}
# Migrate to JUnit Jupiter
Pre
import junit.textui.TestRunner;
import junit.framework.TestCase;
public class ReplaceJUnit3TestCasesWithJupiterRule extends TestCase {
@Override
protected void setUp() {
}
@Override
protected void tearDown() {
}
public void test() throws Exception {
assertEquals(0x7fffffff, Integer.MAX_VALUE);
}
public void testAssertEqualsWithMessage() throws Exception {
assertEquals("Expected to be {0x7fffffff}.", 0x7fffffff, Integer.MAX_VALUE);
}
public static void main(String[] args) {
TestRunner.run(ReplaceJUnit3TestCasesWithJupiterRule.class);
}
}
Post
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
public class ReplaceJUnit3TestCasesWithJupiterRule {
@BeforeEach
protected void setUp() {
}
@AfterEach
protected void tearDown() {
}
@Test
public void test() throws Exception {
assertEquals(0x7fffffff, Integer.MAX_VALUE);
}
@Test
public void testAssertEqualsWithMessage() throws Exception {
assertEquals(0x7fffffff, Integer.MAX_VALUE, "Expected to be {0x7fffffff}.");
}
}
Use a Java Refactoring Tool
No license required
You can review this refactoring on your code without a license by installing jSparrow to your Eclipse IDE. Install the plug-in from Eclipse IDE: Eclipse Marketplace.
System-wide Refactoring
Do you want to automate this refactoring (and many more) to your system-wide code? The automatic application of this system-wide refactoring can be unlocked by acquiring your jSparrow license.
# Properties
Property | Value |
---|---|
Rule ID | ReplaceJUnit3TestCases |
First seen in jSparrow version | 4.1.0 |
Minimum Java version | 5 |
Remediation cost | 15 min |