topchef
topchef

Reputation: 19793

Upgrading to JUnit4 and keeping legacy JUnit 3 tests and test suites by running them together

I was surprised not to find the answer so far. If I am missing something basic I will be more than happy to know that.

There is a large legacy code base that was upgraded to Java 6 (from 1.4). Large number of JUnit 3 tests are present in the code and are organized into test suite that runs successfully with JUnit 4 default runner in Eclipse.

Now, I am adding new tests that are pure JUnit 4 tests (annotations, no TestCase, etc.). What would be a way of running both old JUnit 3 test suite and new JUnit 4 tests together?

Upvotes: 10

Views: 7551

Answers (2)

topchef
topchef

Reputation: 19793

The @RunWith(Suite.class) gives me opportunity to combine both JUnit 4 and JUnit 3 tests and test cases together:

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ExampleOfJunit3TestSuite.class, 
    ExampleOfJUnit3TestCase.class, 
    ExampleOfJUnit4TestSuite.class,
    ExampleOfJUnit4TestCase.class})   
public class BothJUnit4and3TestSuite {
}

The BothJUnit4and3TestSuite runs all tests and test suites listed in @Suite.SuiteClasses.

Upvotes: 10

Alexander Pogrebnyak
Alexander Pogrebnyak

Reputation: 45576

Just use 'JUnit4' test runner in your run configuration.

JUnit4 binaries have a backward compatibility layer that allows it to have both JUnit3 and JUnit4 style classes in the same test suite.

For command line builds just use JUnit4 jars instead of JUnit3.

This was done specifically to ease migration that you are doing now.

Also, it works fine in my project.

Upvotes: 12

Related Questions