[
https://issues.apache.org/jira/browse/SUREFIRE-1531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16529204#comment-16529204
]
Lukáš Křečan edited comment on SUREFIRE-1531 at 7/1/18 8:36 PM:
----------------------------------------------------------------
The test case:
{code:java}
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
public class SimpleTest {
@Test
public void test() {
MyInterface mock = mock(MyInterface.class);
assertNotNull(mock);
}
interface MyInterface {
}
}
{code}
Fails with:
{code:java}
Underlying exception : java.lang.IllegalStateException: Error invoking
(accessor)::defineClass
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
Caused by: java.lang.IllegalStateException: Error invoking
(accessor)::defineClass
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
Caused by: java.lang.IllegalAccessError: class
org.mockito.codegen.MyScheduler$MockitoMock$1440016807 cannot access its
superinterface net.javacrumbs.shedlockexample.SimpleTest$MyScheduler
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
{code}
It may actually be Mockito bug, but even if it were, I'd still like to choose
if I want to use module path for tests or not.
was (Author: lukas_krecan):
The test case:
{code:java}
import org.junit.Test;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.scheduling.TaskScheduler;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
public class SimpleTest {
@Test
public void test() {
MyScheduler mock = mock(MyScheduler.class);
assertNotNull(mock);
}
interface MyScheduler extends TaskScheduler, DisposableBean {
}
}
{code}
Fails with:
{code:java}
Underlying exception : java.lang.IllegalStateException: Error invoking
(accessor)::defineClass
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
Caused by: java.lang.IllegalStateException: Error invoking
(accessor)::defineClass
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
Caused by: java.lang.IllegalAccessError: class
org.mockito.codegen.MyScheduler$MockitoMock$1440016807 cannot access its
superinterface net.javacrumbs.shedlockexample.SimpleTest$MyScheduler
at
shedlock.example/net.javacrumbs.shedlockexample.SimpleTest.test(SimpleTest.java:29)
{code}
> Option to switch-off Java 9 modules
> -----------------------------------
>
> Key: SUREFIRE-1531
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1531
> Project: Maven Surefire
> Issue Type: Improvement
> Components: Maven Surefire Plugin
> Affects Versions: 2.22.0
> Reporter: Lukáš Křečan
> Priority: Major
>
> I am working on a library and I am adding support for Java 9 modules.
> Surefire 2.21.0 by default executes tests with Java 9 modules switched-on if
> it detects module-info.java While it may make sense in some cases, in my case
> I'd like the switch it off.
> The reason is simple. I am using Mockito to mock an interface that extends a
> Spring interface. Mockito has to create an implementation of this interface
> (proxy or subclass) and for this it needs to have access to the Spring
> interfaces. If Java 9 modules are enabled for the tests I have to manually
> add each such dependencies to Surefire configuration, which does not make
> much sense. To makes things worse, the interface actually extends two Spring
> interfaces form two different Spring modules so the configuration is almost
> impossible to get right.
> So far I am at ( and I am still getting IllegalAccessErrors)
> {code:java}
> --add-exports spring.context/org.springframework.scheduling=org.mockito
> --add-exports spring.beans/org.springframework.beans.factory=org.mockito
> {code}
> I would prefer to switch-off the Java 9 modules for the test module
> altogether (same behavior as pre 2.21.0)
>
> The test is here
> [https://github.com/lukas-krecan/ShedLock/blob/java9/shedlock-spring/src/test/java/net/javacrumbs/shedlock/spring/CleanupTest.java]
>
> If you want, I can send a pull request.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)