[ http://jira.codehaus.org/browse/SUREFIRE-747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=270747#comment-270747 ]
Gili commented on SUREFIRE-747: ------------------------------- Hi Kristan, Sorry if I ruffled some features. I've tracked down two bugs so far: 1. slf4j's initialization was not thread-safe: http://bugzilla.slf4j.org/show_bug.cgi?id=176 2. guice's servlet module was not thread-safe: http://code.google.com/p/google-guice/issues/detail?id=635 There is at least one bug that seems to be Surefire-specific. "Time elapsed" is always wrong. Sometimes I get negative values: "Tests run: 12, Failures: 5, Errors: 0, Skipped: 0, Time elapsed: -1,058,443.657 sec <<< FAILURE!" Sometimes I get positive values that are too large: "Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 25.522 sec" I know for a fact the tests only ran for 2.2 seconds because I logged the time at the beginning and end of each test. > Parallel method execution skips Tests > ------------------------------------- > > Key: SUREFIRE-747 > URL: http://jira.codehaus.org/browse/SUREFIRE-747 > Project: Maven Surefire > Issue Type: Bug > Components: Junit 4.7+ (parallel) support > Affects Versions: 2.8, 2.8.1 > Reporter: Gili > Assignee: Kristian Rosenvold > > Here is a simple testcase. > POM file: > {code} > <plugin> > <artifactId>maven-surefire-plugin</artifactId> > <version>2.8.2-SNAPSHOT</version> > <configuration> > <includes> > > <include>**/TestSuite.java</include> > </includes> > <parallel>methods</parallel> > </configuration> > </plugin> > </plugins> > {code} > TestSuite.java > {code} > import org.junit.runner.RunWith; > import org.junit.runners.Suite; > @RunWith(Suite.class) > @Suite.SuiteClasses( > { > ParallelTest.class, > ParallelTest2.class > }) > public class TestSuite > { > } > {code} > ParallelTest.java > {code} > public class ParallelTest > { > public ParallelTest() > { > System.out.println("ParallelTest.constructor"); > } > > @Before > public void setUp() > { > System.out.println("ParallelTest.setUp"); > } > @After > public void tearDown() > { > System.out.println("ParallelTest.tearDown"); > } > @Test > public void first() throws InterruptedException > { > System.out.println("begin ParallelTest.first"); > Thread.sleep(1000); > System.out.println("end ParallelTest.first"); > } > @Test > public void second() throws InterruptedException > { > System.out.println("begin ParallelTest.second"); > Thread.sleep(1000); > System.out.println("end ParallelTest.second"); > } > @Test > public void third() throws InterruptedException > { > System.out.println("begin ParallelTest.third"); > Thread.sleep(1000); > System.out.println("end ParallelTest.third"); > } > } > {code} > ParallelTest2.java is identical except that log output contains ParallelTest2 > instead of ParallelTest. > Actual Output: > {quote} > Concurrency config is parallel='methods', perCoreThreadCount=true, > threadCount=2, useUnlimitedThreads=false > Running com.holdmyspot.health.server.ParallelTest > ParallelTest.constructor > ParallelTest.setUp > begin ParallelTest.first > end ParallelTest.first > ParallelTest.tearDown > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.014 sec > Running com.holdmyspot.health.server.ParallelTest2 > ParallelTest2.constructor > ParallelTest2.setUp > begin ParallelTest2.first > end ParallelTest2.first > ParallelTest2.tearDown > Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.014 sec > Results : > Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 > {quote} > Problem: methods second() and third() are never run for either ParallelTest > or ParallelTest2. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira