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" );