You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/02/28 11:46:43 UTC
svn commit: r1294568 - in /maven/surefire/trunk:
maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/
surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/
surefire-integration-tests/src/test/resources/junit44-multipl...
Author: olamy
Date: Tue Feb 28 10:46:43 2012
New Revision: 1294568
URL: http://svn.apache.org/viewvc?rev=1294568&view=rev
Log:
[SUREFIRE-745] -Dtest supports multiple test classes but not multiple test methods.
Submitted by rainLee .
Added:
maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java (with props)
maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java (with props)
Modified:
maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
Modified: maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java?rev=1294568&r1=1294567&r2=1294568&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java (original)
+++ maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java Tue Feb 28 10:46:43 2012
@@ -19,11 +19,6 @@ package org.apache.maven.plugin.surefire
* under the License.
*/
-import java.io.File;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
@@ -39,6 +34,12 @@ import org.apache.maven.surefire.suite.R
import org.apache.maven.toolchain.ToolchainManager;
import org.codehaus.plexus.util.StringUtils;
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
/**
* Run tests using Surefire.
*
@@ -832,12 +833,20 @@ public class SurefirePlugin
{
return null;
}
- int index = test.indexOf( '#' );
- if ( index >= 0 )
+ String[] testArray = StringUtils.split( test, "," );
+ StringBuffer tests = new StringBuffer();
+ for ( int i = 0; i < testArray.length; i++ )
{
- return test.substring( 0, index );
+ String singleTest = testArray[i];
+ int index = singleTest.indexOf( '#' );
+ if ( index >= 0 )
+ {// the way version 2.7.3. support single test method
+ singleTest = singleTest.substring( 0, index );
+ }
+ tests.append( singleTest );
+ tests.append( "," );
}
- return test;
+ return tests.toString();
}
/**
@@ -849,10 +858,27 @@ public class SurefirePlugin
{
return null;
}
+ //modified by rainLee, see http://jira.codehaus.org/browse/SUREFIRE-745
int index = this.test.indexOf( '#' );
+ int index2 = this.test.indexOf( "," );
if ( index >= 0 )
{
- return this.test.substring( index + 1, this.test.length() );
+ if ( index2 < 0 )
+ {
+ String testStrAfterFirstSharp = this.test.substring( index + 1, this.test.length() );
+ if ( testStrAfterFirstSharp.indexOf( "+" ) < 0 )
+ {//the original way
+ return testStrAfterFirstSharp;
+ }
+ else
+ {
+ return this.test;
+ }
+ }
+ else
+ {
+ return this.test;
+ }
}
return null;
}
Added: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,50 @@
+package org.apache.maven.surefire.its;
+
+import org.apache.maven.surefire.its.fixture.SurefireIntegrationTestCase;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+/**
+ * Test project using -Dtest=mtClass#myMethod+myMethod2,secondClass#testMethod
+ *
+ * @author <a href="mailto:ytsolar@gmail.com">rainLee</a>
+ */
+public class TestMultipleMethodsIT
+ extends SurefireIntegrationTestCase
+{
+ public void multipleMethod( String projectName )
+ throws Exception
+ {
+ unpack( projectName ).executeTest().verifyErrorFreeLog().assertTestSuiteResults( 3, 0, 0, 0 );
+ }
+
+ public void testJunit44()
+ throws Exception
+ {
+ multipleMethod( "junit44-multiple-methods" );
+ }
+
+ public void testJunit48()
+ throws Exception
+ {
+ multipleMethod( "junit48-multiple-methods" );
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/TestMultipleMethodsIT.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml Tue Feb 28 10:46:43 2012
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.plugins.surefire</groupId>
+ <artifactId>junit4</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>Test for JUnit 4</name>
+
+
+ <properties>
+ <junitVersion>4.4</junitVersion>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junitVersion}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.version}</version>
+ <configuration>
+ <test>junit4.BasicTest#testSuccessOne+testFailOne,junit4.TestThree#testSuccessTwo</test>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/pom.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,63 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class BasicTest
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testFailOne()
+ {
+ Assert.assertFalse( false );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/BasicTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,57 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class TestThree
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestThree.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,57 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class TestTwo
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit44-multiple-methods/src/test/java/junit4/TestTwo.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml Tue Feb 28 10:46:43 2012
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.plugins.surefire</groupId>
+ <artifactId>junit4</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>Test for JUnit 4.8.1</name>
+
+
+ <properties>
+ <junitVersion>4.8.1</junitVersion>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junitVersion}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.version}</version>
+ <configuration>
+ <test>junit4.BasicTest#testSuccessOne+testFailOne,junit4.TestThree#testSuccessTwo</test>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/pom.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,63 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class BasicTest
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testFailOne()
+ {
+ Assert.assertFalse( false );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/BasicTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,57 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class TestThree
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestThree.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java?rev=1294568&view=auto
==============================================================================
--- maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java (added)
+++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java Tue Feb 28 10:46:43 2012
@@ -0,0 +1,57 @@
+package junit4;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class TestTwo
+{
+
+ private boolean setUpCalled = false;
+
+ private static boolean tearDownCalled = false;
+
+ @Before
+ public void setUp()
+ {
+ setUpCalled = true;
+ tearDownCalled = false;
+ System.out.println( "Called setUp" );
+ }
+
+ @After
+ public void tearDown()
+ {
+ setUpCalled = false;
+ tearDownCalled = true;
+ System.out.println( "Called tearDown" );
+ }
+
+ @Test
+ public void testSetUp()
+ {
+ Assert.assertTrue( "setUp was not called", setUpCalled );
+ }
+
+
+ @Test
+ public void testSuccessOne()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @Test
+ public void testSuccessTwo()
+ {
+ Assert.assertTrue( true );
+ }
+
+ @AfterClass
+ public static void oneTimeTearDown()
+ {
+
+ }
+
+}
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/surefire/trunk/surefire-integration-tests/src/test/resources/junit48-multiple-methods/src/test/java/junit4/TestTwo.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java?rev=1294568&r1=1294567&r2=1294568&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java (original)
+++ maven/surefire/trunk/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java Tue Feb 28 10:46:43 2012
@@ -19,9 +19,6 @@ package org.apache.maven.surefire.junit4
* under the License.
*/
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.List;
import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
import org.apache.maven.surefire.common.junit4.JUnit4RunListenerFactory;
import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
@@ -43,12 +40,15 @@ import org.apache.maven.surefire.util.Ru
import org.apache.maven.surefire.util.TestsToRun;
import org.apache.maven.surefire.util.internal.StringUtils;
import org.codehaus.plexus.util.SelectorUtils;
-
import org.junit.runner.Request;
import org.junit.runner.Result;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.List;
+
/**
* @author Kristian Rosenvold
*/
@@ -131,7 +131,16 @@ public class JUnit4Provider
try
{
- execute( clazz, listeners, this.requestedTestMethod );
+ if ( !StringUtils.isBlank( this.requestedTestMethod ) )
+ {
+ String actualTestMethod = getMethod( clazz, this.requestedTestMethod );//add by rainLee
+ String[] testMethods = StringUtils.split( actualTestMethod, "+" );
+ execute( clazz, listeners, testMethods );
+ }
+ else
+ {//the original way
+ execute( clazz, listeners, null );
+ }
}
catch ( TestSetFailedException e )
{
@@ -214,18 +223,22 @@ public class JUnit4Provider
}
- private static void execute( Class<?> testClass, RunNotifier fNotifier, String testMethod )
+ private static void execute( Class<?> testClass, RunNotifier fNotifier, String[] testMethods )
throws TestSetFailedException
{
- if ( !StringUtils.isBlank( testMethod ) )
+ if ( null != testMethods )
{
Method[] methods = testClass.getMethods();
for ( int i = 0, size = methods.length; i < size; i++ )
{
- if ( SelectorUtils.match( testMethod, methods[i].getName() ) )
+ for ( int j = 0; j < testMethods.length; j++ )
{
- Runner junitTestRunner = Request.method( testClass, methods[i].getName() ).getRunner();
- junitTestRunner.run( fNotifier );
+ if ( SelectorUtils.match( testMethods[j], methods[i].getName() ) )
+ {
+ Runner junitTestRunner = Request.method( testClass, methods[i].getName() ).getRunner();
+ junitTestRunner.run( fNotifier );
+ }
+
}
}
return;
@@ -235,4 +248,36 @@ public class JUnit4Provider
junitTestRunner.run( fNotifier );
}
+
+ /**
+ * this method retrive testMethods from String like "com.xx.ImmutablePairTest#testBasic,com.xx.StopWatchTest#testLang315+testStopWatchSimpleGet"
+ * <br>
+ * and we need to think about cases that 2 or more method in 1 class. we should choose the correct method
+ *
+ * @param testClass
+ * @param testMethodStr
+ * @return
+ * @author railLee
+ */
+ private static String getMethod( Class testClass, String testMethodStr )
+ {
+ String className = testClass.getName();
+
+ if ( testMethodStr.indexOf( "#" ) < 0 && testMethodStr.indexOf( "," ) < 0 )
+ {//the original way
+ return testMethodStr;
+ }
+ testMethodStr += ",";//for the bellow split code
+ int beginIndex = testMethodStr.indexOf( className );
+ int endIndex = testMethodStr.indexOf( ",", beginIndex );
+ String classMethodStr =
+ testMethodStr.substring( beginIndex, endIndex );//String like "StopWatchTest#testLang315"
+
+ int index = classMethodStr.indexOf( '#' );
+ if ( index >= 0 )
+ {
+ return classMethodStr.substring( index + 1, classMethodStr.length() );
+ }
+ return null;
+ }
}