javagoogle-app-enginemaventestingcapedwarf

Running Arquillian App Engine Container Test


I'm trying to run the https://github.com/alesj/arquillian-container-gae test within my IntelliJ workspace. However it won't run I've tried:

  1. Git clone then import to IntelliJ (parent)
  2. Then run the test:

enter image description here

This is what I get:

enter image description here

I have added the -Dappengine.sdk.root in the Maven runner config of IntelliJ but it doesn't seem to affect anything.

Also I have tried running $mvn test and it seems to work fine:

Running org.jboss.arquillian.container.appengine.embedded.AppEngineEmbeddedClientTestCase
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.384 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

However internally when I checked with the -e switch I can see this error:

Jan 05, 2015 4:22:22 AM com.google.appengine.tools.development.agent.AppEngineDevAgent premain
SEVERE: Unable to load the App Engine dev agent. Security restrictions will not be completely emulated.
java.lang.RuntimeException: Unexpected exception during cast.
        at com.google.apphosting.utils.clearcast.ClearCast$CasterImpl.cast(ClearCast.java:385)
        at com.google.apphosting.utils.clearcast.ClearCast.staticCast(ClearCast.java:252)
        at com.google.apphosting.utils.clearcast.ClearCast.staticCast(ClearCast.java:263)
        at com.google.appengine.tools.development.agent.AppEngineDevAgent.premain(AppEngineDevAgent.java:61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
        at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.IllegalAccessException: Class com.google.apphosting.utils.clearcast.ClearCast$CasterImpl can not access a member of class com.google.appengine.tools.development.agent.$Proxy0 with modifiers "public"
        at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:101)
        at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:295)
        at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:287)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:398)
        at com.google.apphosting.utils.clearcast.ClearCast$CasterImpl.cast(ClearCast.java:383)
        ... 9 more
Running org.jboss.arquillian.container.appengine.embedded.AppEngineEmbeddedClientTestCase
Jan 05, 2015 4:22:23 AM org.jboss.arquillian.container.appengine.embedded.AppEngineSetup prepare
INFO: simple.war:

Solution

  • How are you running these tests?

    I see Jetty Embedded Arquillian Container? That won’t work.

    I would suggest using GAE Arquillian Container for SDK.

    Or a bit more hacky GAE Arquillian Container Embedded.

    We use the GAE ARQ SDK Container in GAE TCK: