Index: surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java =================================================================== --- surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java (revision 597273) +++ surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGXmlTestSuite.java (working copy) @@ -78,9 +78,10 @@ { throw new IllegalStateException( "You must call locateTestSets before calling execute" ); } - + TestNGDirectoryTestSuite.startTestSuite( reporterManager, this ); TestNGExecutor.run( this.suiteFilePaths, this.testSourceDirectory, this.options, this.version, reporterManager, this, reportsDirectory ); + TestNGDirectoryTestSuite.finishTestSuite( reporterManager, this ); } public void execute( String testSetName, ReporterManager reporterManager, ClassLoader classLoader ) Index: surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java =================================================================== --- surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java (revision 597273) +++ surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGDirectoryTestSuite.java (working copy) @@ -19,21 +19,23 @@ * under the License. */ +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; + import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.surefire.report.ReportEntry; import org.apache.maven.surefire.report.ReporterException; import org.apache.maven.surefire.report.ReporterManager; import org.apache.maven.surefire.suite.AbstractDirectoryTestSuite; import org.apache.maven.surefire.testset.SurefireTestSet; import org.apache.maven.surefire.testset.TestSetFailedException; -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; - /** * Test suite for TestNG based on a directory of Java test classes. Can also execute JUnit tests. * @@ -101,14 +103,67 @@ throw new IllegalStateException( "You must call locateTestSets before calling execute" ); } - Class[] testClasses = new Class[testSets.size()]; - int i = 0; + List testNgTestClasses = new ArrayList(); + List junitTestClasses = new ArrayList(); for ( Iterator it = testSets.values().iterator(); it.hasNext(); ) { SurefireTestSet testSet = (SurefireTestSet) it.next(); - testClasses[i++] = testSet.getTestClass(); + Class c = testSet.getTestClass(); + if (junit.framework.Test.class.isAssignableFrom( c )) { + junitTestClasses.add( c ); + } else { + testNgTestClasses.add( c ); + } } + + startTestSuite( reporterManager, this ); + + Class[] testClasses = (Class[]) testNgTestClasses.toArray( new Class[0] ); TestNGExecutor.run( testClasses, this.testSourceDirectory, this.options, this.version, reporterManager, this, reportsDirectory ); + + if (junitTestClasses.size() > 0) { + testClasses = (Class[]) junitTestClasses.toArray( new Class[0] ); + + Map junitOptions = new HashMap(); + for (Iterator it = this.options.keySet().iterator(); it.hasNext();) { + Object key = it.next(); + junitOptions.put( key, options.get( key ) ); + } + + junitOptions.put( "junit", Boolean.TRUE ); + + TestNGExecutor.run( testClasses, this.testSourceDirectory, junitOptions, this.version, reporterManager, this, reportsDirectory ); + } + + finishTestSuite( reporterManager, this ); + } + + public static void startTestSuite( ReporterManager reporterManager, Object suite ) + { + String rawString = bundle.getString( "testSetStarting" ); + + ReportEntry report = new ReportEntry( suite, "TestSuite", rawString ); + + try + { + reporterManager.testSetStarting( report ); + } + catch ( ReporterException e ) + { + // TODO: remove this exception from the report manager + } + } + + public static void finishTestSuite( ReporterManager reporterManager, Object suite ) + { + String rawString = bundle.getString( "testSetCompletedNormally" ); + + ReportEntry report = + new ReportEntry( suite, "TestSuite", rawString ); + + reporterManager.testSetCompleted( report ); + + reporterManager.reset(); } } Index: surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java =================================================================== --- surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java (revision 597273) +++ surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java (working copy) @@ -137,36 +137,12 @@ public void onStart( ISuite suite ) { - String rawString = bundle.getString( "testSetStarting" ); - String[] includedGroups = (String[]) suite.getMethodsByGroups().keySet().toArray( new String[0] ); - - String group = groupString( includedGroups, suite.getName() ); - - ReportEntry report = new ReportEntry( source, suite.getName(), group, rawString ); - - try - { - reportManager.testSetStarting( report ); - } - catch ( ReporterException e ) - { - // TODO: remove this exception from the report manager - } } public void onFinish( ISuite suite ) { - String rawString = bundle.getString( "testSetCompletedNormally" ); - - String[] includedGroups = (String[]) suite.getMethodsByGroups().keySet().toArray( new String[0] ); - - ReportEntry report = - new ReportEntry( source, suite.getName(), groupString( includedGroups, null ), rawString ); - - reportManager.testSetCompleted( report ); - reportManager.reset(); } /** Index: surefire-providers/surefire-testng/pom.xml =================================================================== --- surefire-providers/surefire-testng/pom.xml (revision 597273) +++ surefire-providers/surefire-testng/pom.xml (working copy) @@ -33,6 +33,11 @@ maven-artifact 2.0 + + junit + junit + 3.8.1 + Index: surefire-api/src/main/java/org/apache/maven/surefire/suite/AbstractDirectoryTestSuite.java =================================================================== --- surefire-api/src/main/java/org/apache/maven/surefire/suite/AbstractDirectoryTestSuite.java (revision 597273) +++ surefire-api/src/main/java/org/apache/maven/surefire/suite/AbstractDirectoryTestSuite.java (working copy) @@ -41,7 +41,7 @@ public abstract class AbstractDirectoryTestSuite implements SurefireTestSuite { - protected ResourceBundle bundle = ResourceBundle.getBundle( Surefire.SUREFIRE_BUNDLE_NAME ); + protected static final ResourceBundle bundle = ResourceBundle.getBundle( Surefire.SUREFIRE_BUNDLE_NAME ); private static final String FS = System.getProperty( "file.separator" );