You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by kr...@apache.org on 2010/12/13 21:29:24 UTC
svn commit: r1045361 - in
/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit:
JUnit3Provider.java JUnit3TestChecker.java
Author: krosenvold
Date: Mon Dec 13 20:29:24 2010
New Revision: 1045361
URL: http://svn.apache.org/viewvc?rev=1045361&view=rev
Log:
[SUREFIRE-662] Fixed for junit3
Modified:
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3TestChecker.java
Modified: maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java?rev=1045361&r1=1045360&r2=1045361&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java Mon Dec 13 20:29:24 2010
@@ -19,16 +19,23 @@ package org.apache.maven.surefire.junit;
* under the License.
*/
+import org.apache.maven.surefire.Surefire;
import org.apache.maven.surefire.providerapi.ProviderParameters;
import org.apache.maven.surefire.providerapi.SurefireProvider;
+import org.apache.maven.surefire.report.DefaultReportEntry;
+import org.apache.maven.surefire.report.ReportEntry;
import org.apache.maven.surefire.report.ReporterException;
import org.apache.maven.surefire.report.ReporterFactory;
-import org.apache.maven.surefire.report.ReporterManagerFactory;
+import org.apache.maven.surefire.report.ReporterManager;
import org.apache.maven.surefire.suite.RunResult;
+import org.apache.maven.surefire.testset.PojoTestSet;
+import org.apache.maven.surefire.testset.SurefireTestSet;
import org.apache.maven.surefire.testset.TestSetFailedException;
import org.apache.maven.surefire.util.DirectoryScanner;
+import org.apache.maven.surefire.util.TestsToRun;
import java.util.Iterator;
+import java.util.ResourceBundle;
/**
* @author Kristian Rosenvold
@@ -43,45 +50,83 @@ public class JUnit3Provider
private final DirectoryScanner directoryScanner;
+ private final JUnit3TestChecker jUnit3TestChecker;
+
+ private TestsToRun testsToRun;
+
+ private static ResourceBundle bundle = ResourceBundle.getBundle( Surefire.SUREFIRE_BUNDLE_NAME );
+
public JUnit3Provider( ProviderParameters booterParameters )
{
this.reporterFactory = booterParameters.getReporterFactory();
this.testClassLoader = booterParameters.getTestClassLoader();
this.directoryScanner = booterParameters.getDirectoryScanner();
+ this.jUnit3TestChecker = new JUnit3TestChecker( testClassLoader );
+
}
public RunResult invoke( Object forkTestSet )
throws TestSetFailedException, ReporterException
{
- JUnitDirectoryTestSuite suite = getSuite();
- suite.locateTestSets( testClassLoader );
- if ( forkTestSet != null )
+ if ( testsToRun == null )
{
- suite.execute( (String) forkTestSet, (ReporterManagerFactory) reporterFactory, testClassLoader );
+ testsToRun = forkTestSet == null ? scanClassPath() : TestsToRun.fromClass( (Class) forkTestSet );
}
- else
+
+ for ( Iterator iter = testsToRun.iterator(); iter.hasNext(); )
{
- suite.execute( (ReporterManagerFactory) reporterFactory, testClassLoader );
+ Class clazz = (Class) iter.next();
+ ReporterManager reporter = (ReporterManager) reporterFactory.createReporter();
+ SurefireTestSet surefireTestSet = createTestSet( clazz );
+ executeTestSet( surefireTestSet, reporterFactory, testClassLoader);
}
+
return reporterFactory.close();
}
- private JUnitDirectoryTestSuite getSuite()
+ private SurefireTestSet createTestSet( Class clazz )
+ throws TestSetFailedException
{
- return new JUnitDirectoryTestSuite( directoryScanner );
+ return jUnit3TestChecker.isJunit3Test( clazz )
+ ? new JUnitTestSet( clazz ) :
+ (SurefireTestSet) new PojoTestSet( clazz );
+
+ }
+
+ private void executeTestSet( SurefireTestSet testSet, ReporterFactory reporterManagerFactory,
+ ClassLoader classLoader )
+ throws ReporterException, TestSetFailedException
+ {
+
+ ReporterManager reporterManager = (ReporterManager) reporterManagerFactory.createReporter();
+
+ String rawString = bundle.getString( "testSetStarting" );
+
+ ReportEntry report = new DefaultReportEntry( this.getClass().getName(), testSet.getName(), rawString );
+ reporterManager.testSetStarting( report );
+
+ testSet.execute( reporterManager, classLoader );
+
+ rawString = bundle.getString( "testSetCompletedNormally" );
+
+ report = new DefaultReportEntry( this.getClass().getName(), testSet.getName(), rawString );
+
+ reporterManager.testSetCompleted( report );
+
+ reporterManager.reset();
}
+ private TestsToRun scanClassPath()
+ {
+ return directoryScanner.locateTestClasses( testClassLoader, jUnit3TestChecker );
+ }
+
+
public Iterator getSuites()
{
- try
- {
- return getSuite().locateTestSets( testClassLoader ).keySet().iterator();
- }
- catch ( TestSetFailedException e )
- {
- throw new RuntimeException( e );
- }
+ testsToRun = scanClassPath();
+ return testsToRun.iterator();
}
public Boolean isRunnable()
Modified: maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3TestChecker.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3TestChecker.java?rev=1045361&r1=1045360&r2=1045361&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3TestChecker.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnit3TestChecker.java Mon Dec 13 20:29:24 2010
@@ -1,4 +1,5 @@
package org.apache.maven.surefire.junit;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,9 +19,12 @@ package org.apache.maven.surefire.junit;
* under the License.
*/
+import org.apache.maven.surefire.NonAbstractClassFilter;
import org.apache.maven.surefire.util.ReflectionUtils;
import org.apache.maven.surefire.util.ScannerFilter;
+import java.lang.reflect.Modifier;
+
/**
* @author Kristian Rosenvold
*/
@@ -29,6 +33,8 @@ public class JUnit3TestChecker
{
private final Class junitClass;
+ private final NonAbstractClassFilter nonAbstractClassFilter = new NonAbstractClassFilter();
+
public JUnit3TestChecker( ClassLoader testClassLoader )
{
@@ -37,16 +43,20 @@ public class JUnit3TestChecker
public boolean accept( Class testClass )
{
- return isValidJUnit3Test( testClass );
+ return nonAbstractClassFilter.accept( testClass ) && isValidJUnit3Test( testClass );
}
public boolean isValidJUnit3Test( Class testClass )
{
- return junitClass != null && junitClass.isAssignableFrom( testClass ) ||
- classHasPublicNoArgConstructor( testClass );
+ return isJunit3Test( testClass ) || isPojoTest( testClass );
+ }
+
+ public boolean isJunit3Test( Class testClass )
+ {
+ return junitClass != null && junitClass.isAssignableFrom( testClass );
}
- private boolean classHasPublicNoArgConstructor( Class testClass )
+ private boolean isPojoTest( Class testClass )
{
try
{