Hi,
I apologize in advance if this is sent to the wrong mailing list.
We are getting new errors running tycho-surefire-plugin:1.3.0:test with the 4.17M1 target.
In our JUnit test class, we have:
- a method called by a static initializer
- a @Parameters method
- a @BeforeClass method
In 4.16, all three of these methods are called once, just before running the test class, after the log outputs: Running ...Test.
But in 4.17, the first two methods are called right after the test goal starts, before running any other test class and several minutes before that specific test class runs. Additionally, the @Parameters method is called twice. The @BeforeClass method is called just before running the test class as in 4.16.
Our test class does not handle well the @Parameters method being called twice, it throws an exception and the test fails. It also modifies the workspace and therefore could interfere with other tests when called this early.
We would like to know if:
a) It is a bug in Tycho or Maven or Junit that these methods are called early and multiple times
b) It is a bug in our test setup or maven configuration that makes this happen
c) it is not a bug and our test class should be able to handle this
Note that we have already resolved our issue by modifying our test class to move the workspace operations to the @BeforeClass method.
Below I have included the stack traces when the @Parameters method is being called. I added blank lines to show where the stack trace starts to differ.
Thank you,
Patrick
4.16: @Parameters called just before running test class
org.eclipse.tracecompass.tmf.core.tests.io.ResourceUtilTest.getTracePaths(ResourceUtilTest.java:110),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59),
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12),
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56),
org.junit.runners.Parameterized$RunnersFactory.allParameters(Parameterized.java:424),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:375),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:360),
org.junit.runners.Parameterized.<init>(Parameterized.java:303),
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method),
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62),
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45),
java.lang.reflect.Constructor.newInstance(Constructor.java:423),
org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104),
org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28),
org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19),
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:362),
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273),
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238),
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:206),
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:161),
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:84),
org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:110),
org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:593),
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:205),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657),
org.eclipse.equinox.launcher.Main.basicRun(Main.java:594),
org.eclipse.equinox.launcher.Main.run(Main.java:1447),
org.eclipse.equinox.launcher.Main.main(Main.java:1420)
4.17: @Parameters first call at start of test goal
org.eclipse.tracecompass.tmf.core.tests.io.ResourceUtilTest.getTracePaths(ResourceUtilTest.java:110),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59),
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12),
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56),
org.junit.runners.Parameterized$RunnersFactory.allParameters(Parameterized.java:424),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:375),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:360),
org.junit.runners.Parameterized.<init>(Parameterized.java:303),
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method),
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62),
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45),
java.lang.reflect.Constructor.newInstance(Constructor.java:423),
org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104),
org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder$DefensiveAnnotatedBuilder.buildRunner(DefensiveAllDefaultPossibilitiesBuilder.java:74),
org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.vintage.engine.discovery.TestClassRequestResolver.createRunnerTestDescriptor(TestClassRequestResolver.java:54),
org.junit.vintage.engine.discovery.VintageDiscoverer.lambda$discover$0(VintageDiscoverer.java:56),
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193),
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193),
java.util.Iterator.forEachRemaining(Iterator.java:116),
java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801),
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481),
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471),
java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312),
java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742),
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481),
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471),
java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151),
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174),
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234),
java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418),
org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:58),
org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:65),
org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130),
org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117),
org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:82),
org.apache.maven.surefire.junitplatform.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:56),
org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102),
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:129),
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:117),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:206),
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:161),
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:84),
org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:110),
org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:593),
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:205),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657),
org.eclipse.equinox.launcher.Main.basicRun(Main.java:594),
org.eclipse.equinox.launcher.Main.run(Main.java:1447),
org.eclipse.equinox.launcher.Main.main(Main.java:1420)
4.17: @Parameters second call at start of test goal
org.eclipse.tracecompass.tmf.core.tests.io.ResourceUtilTest.getTracePaths(ResourceUtilTest.java:110),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59),
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12),
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56),
org.junit.runners.Parameterized$RunnersFactory.allParameters(Parameterized.java:424),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:375),
org.junit.runners.Parameterized$RunnersFactory.<init>(Parameterized.java:360),
org.junit.runners.Parameterized.<init>(Parameterized.java:303),
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method),
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62),
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45),
java.lang.reflect.Constructor.newInstance(Constructor.java:423),
org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104),
org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder$DefensiveAnnotatedBuilder.buildRunner(DefensiveAllDefaultPossibilitiesBuilder.java:74),
org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37),
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70),
org.junit.vintage.engine.discovery.TestClassRequestResolver.createRunnerTestDescriptor(TestClassRequestResolver.java:54),
org.junit.vintage.engine.discovery.VintageDiscoverer.lambda$discover$0(VintageDiscoverer.java:56),
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193),
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193),
java.util.Iterator.forEachRemaining(Iterator.java:116),
java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801),
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481),
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471),
java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312),
java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742),
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481),
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471),
java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151),
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174),
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234),
java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418),
org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:58),
org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:65),
org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130),
org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117),
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90),
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:142),
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:117),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:206),
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:161),
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:84),
org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:110),
org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:593),
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:205),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137),
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401),
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
java.lang.reflect.Method.invoke(Method.java:498),
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657),
org.eclipse.equinox.launcher.Main.basicRun(Main.java:594),
org.eclipse.equinox.launcher.Main.run(Main.java:1447),
org.eclipse.equinox.launcher.Main.main(Main.java:1420)
Full log for 4.16: (search for "*** ")
Full log for 4.17: (search for "*** ")