Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[tycho-dev] Unit test error in 4.17 due to @Parameters running twice

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 "*** ")
https://ci.eclipse.org/tracecompass/job/tracecompass-gerrit-core-only/905/consoleFull

Full log for 4.17: (search for "*** ")
https://ci.eclipse.org/tracecompass/job/tracecompass-gerrit-core-only/903/consoleFull


Back to the top