Emond Papegaaij created SUREFIRE-1387: -----------------------------------------
Summary: runTime always 0 in statistics, breaking runOrder=balanced Key: SUREFIRE-1387 URL: https://issues.apache.org/jira/browse/SUREFIRE-1387 Project: Maven Surefire Issue Type: Bug Components: Junit 4.7+ (parallel) support Affects Versions: 2.20 Reporter: Emond Papegaaij We are using parallized tests to speed up the builds, however tests are executed in less than optimal order. `<runOrder>balanced</runOrder>` is supposed to improve the ordering, but it requires statistics in a `.surefire-XXXXX` file. A maven build does write this file, but runTime is reported as 0 for all tests. Every line in the file looks like (where n is the number of executions): {code} n,0,method(class) {code} I've traced the source of these '0's to nulls in the `ForkedBooter` protocol. These are written by `ForkingRunListener.testSucceeded` on this stack: {code} Thread [main] (Suspended (breakpoint at line 151 in ForkingRunListener)) owns: Notifier (id=14012) ForkingRunListener.testSucceeded(ReportEntry) line: 151 JUnit4RunListener.testFinished(Description) line: 140 SynchronizedRunListener.testFinished(Description) line: 56 RunNotifier$7.notifyListener(RunListener) line: 190 RunNotifier$7(RunNotifier$SafeNotifier).run() line: 72 Notifier(RunNotifier).fireTestFinished(Description) line: 187 JUnitSupervisor.afterFeature(FeatureInfo) line: 193 ParameterizedSpecRunner(BaseSpecRunner).runFeature() line: 239 ParameterizedSpecRunner(BaseSpecRunner).runFeatures() line: 188 ParameterizedSpecRunner(BaseSpecRunner).doRunSpec() line: 98 BaseSpecRunner$1.invoke(Object, Object...) line: 84 ParameterizedSpecRunner(BaseSpecRunner).invokeRaw(Object, MethodInfo, Object...) line: 481 ParameterizedSpecRunner(BaseSpecRunner).invoke(Object, MethodInfo, Object...) line: 464 ParameterizedSpecRunner(BaseSpecRunner).runSpec() line: 76 ParameterizedSpecRunner(BaseSpecRunner).run() line: 67 ArquillianSputnik.run(RunNotifier) line: 135 JUnit4Provider.execute(Class<?>, Notifier, Filter) line: 365 JUnit4Provider.executeWithRerun(Class<?>, Notifier) line: 272 JUnit4Provider.executeTestSet(Class<?>, RunListener, Notifier) line: 236 JUnit4Provider.invoke(Object) line: 159 ForkedBooter.invokeProviderInSameClassLoader(Object, Object, ProviderConfiguration, boolean, StartupConfiguration, boolean) line: 386 ForkedBooter.runSuitesInProcess(Object, StartupConfiguration, ProviderConfiguration, PrintStream) line: 323 ForkedBooter.main(String...) line: 143 {code} `JUnit4RunListener.testFinished(Description)` always creates TestReports with 'elapsed == null'. We are using the following configuration: {code} <configuration> <forkCount>3</forkCount> <reuseForks>true</reuseForks> <runOrder>balanced</runOrder> <useManifestOnlyJar>false</useManifestOnlyJar> </configuration> {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)