You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Konrad Windszus (JIRA)" <ji...@apache.org> on 2015/01/16 11:51:34 UTC

[jira] [Commented] (SLING-4321) Sling JUnit Remote should depend on SLF4J with Compile Scope

    [ https://issues.apache.org/jira/browse/SLING-4321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14280110#comment-14280110 ] 

Konrad Windszus commented on SLING-4321:
----------------------------------------

I fixed the scope with rev. 1652381
[~bdelacretaz] Could you have a look?
I still don't get why that module is a bundle. In my regard that should be a regular Jar, since it is embedded in the JUnit Core Bundle and otherwise only used as a dependency (but never directly used in any OSGi environment).

> Sling JUnit Remote should depend on SLF4J with Compile Scope
> ------------------------------------------------------------
>
>                 Key: SLING-4321
>                 URL: https://issues.apache.org/jira/browse/SLING-4321
>             Project: Sling
>          Issue Type: Improvement
>          Components: Testing
>    Affects Versions: JUnit Remote Tests Runners 1.0.10
>            Reporter: Konrad Windszus
>             Fix For: JUnit Remote Test Runners 1.0.12
>
>
> Currently Sling JUnit Remote (org.apache.sling.junit.remote, 1.0.10) depends on SLF4J with scope {{provided}}. Therefore it is not available for a Maven Module (e.g. a JAR which executes the test on the remote instance), if that one only depends on org.apache.sling.junit.remote.
> That JAR needs to add the dependency to SLF4J explicitly (even if the classes within the JAR directly do not need that), just because the Sling Remove Test Runner needs that on the classpath.
> Since that dependency may be used at runtime outside of an OSGI container (why is that a bundle anyways?), e.g. by the maven-failsafe-plugin it should declare all runtime dependencies with scope {{compile}} or {{runtime}}.
> Currently if the maven-failsafe-plugin is executing a test annotated with SlingTestRunner and the dependency to SLF4J is not added it fails with the following error:
> {code}
> java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
> 	at org.apache.sling.junit.remote.testrunner.SlingRemoteTestRunner.<clinit>(SlingRemoteTestRunner.java:46)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
> 	at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
> 	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
> 	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> 	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
> 	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> 	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
> 	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
> 	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
> 	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
> Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> 	at org.apache.sling.junit.remote.testrunner.SlingRemoteTestRunner.<clinit>(SlingRemoteTestRunner.java:46)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
> 	at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
> 	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
> 	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> 	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
> 	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> 	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
> 	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
> 	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
> 	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
> 	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
> Results :
> Tests in error: 
>   RemoteIT.initializationError ยป NoClassDefFound org/slf4j/LoggerFactory
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)