1

gwt junit を使用して gwt アプリをテストしようとしていますが、オブジェクト化をテストするために正しく設定できないようです。すべてのチュートリアルは、DataStore のテストを示していますが、Objectify は示していません (これはより高いレベルのデータベース サービスです)。テスト用の私の基本クラスは次のようになります。

public class TestBase {
private static final LocalServiceTestHelper helper =
    new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
protected static ObjectifyFactory fact;

@BeforeClass
public static void setUp() {
    helper.setUp();
    fact = new ObjectifyFactory() {
        @Override
        public Objectify begin(ObjectifyOpts opts)
        {
            opts.setSessionCache(false);
            return super.begin(opts);
        }
    };

}

@AfterClass
public static void tearDown() {
    helper.tearDown();
}

}

次に、ベースを拡張するクラスがあります:

public class UserServiceTest extends TestBase{
private User inactiveUser;
private UserService us;
Objectify _ofy;

@Rule
public ExpectedException thrown = ExpectedException.none();


@Before
public void beforeTest() {   

    //Register the classes used in the test
    fact.register(User.class);


    us = new UserService();
    inactiveUser = new User();

}   

@Test
public void basicTest(){
    Objectify ofy = ObjectifyService.begin();
    ofy.put(inactiveUser); //This fails with exception: An exception occurred: com.google.apphosting.api.ApiProxy$CallNotFoundException 

            //My goal is to reach these test but "addUser" uses also objectify
    //UserService.addUser("shpungin@gmail.com", "bye");
    //assertNotNull(inactiveUser.get_id());
}

私が間違っていることを知っていますか?私はインターネット全体を調べましたが、解決策が見つかりませんでした (.classpath から app-engine-sdk を削除すると言う人もいますが、うまくいかないようです。

ありがとうございました。

4

1 に答える 1

1

私はこれを解決しました。

com.google.apphosting.api.ApiProxy はアプリ エンジンの一部である必要がありますが、一部の jar は .classpath 内に配置する必要があります。

${SDK_ROOT}/lib/testing/appengine-testing.jar

${SDK_ROOT}/lib/impl/appengine-api.jar

${SDK_ROOT}/lib/impl/appengine-api-labs.jar

${SDK_ROOT}/lib/impl/appengine-api-stubs.jar //これは見逃しました

また、アプリ エンジンを v 1.6.4.1 にアップグレードしました (これも役に立ったかもしれません)。

于 2012-06-01T16:31:31.313 に答える