1

「モック」を行う必要があるGAEランタイム内で何かをしようとしています:

  private Mongo createMongo() {
    Mongo mongo = Mockito.mock(Mongo.class);
    ...
  }

ただし、「反射」は制限されたクラスであるため、これは明らかにエラーを引き起こします。

java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.<init>(SunReflectionFactoryInstantiator.java:24)
    at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:65)
    at org.objenesis.ObjenesisBase.getInstantiatorOf(ObjenesisBase.java:76)
    at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59)
    at org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:111)
    at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:51)
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:52)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:41)
    at org.mockito.Mockito.mock(Mockito.java:1014)
    at org.mockito.Mockito.mock(Mockito.java:909)
  • これに対する回避策はありますか? 「リフレクション」を GAE ランタイムで機能させる方法はありますか?
  • sun.reflectリフレクションを可能にする「エミュレーション」ライブラリはありますか?
  • おそらく、どのクラスを反映できるかを定義するためでしょうか? 好き@Reflectableとか
  • または、AppEngine で動作する Mock フレームワークが既に存在しますか?

アップデート:

2010年に似たような質問を見つけました:

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/uIWRftGl-fA

しかし、今のところ答えはありません。

4

1 に答える 1