views:

1015

answers:

2

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?

+4  A: 

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.

Alexander Pogrebnyak
Alex, thank u, but I was looking for more concrete solution - thanks to ur answer I believe I came up with one. I'll add it as an answer and will give u a credit for it.
grigory
+1  A: 

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.

grigory