0

「LocalBackendServiceTestConfig」と呼ばれるものを実行する方法が見つかりません...このページからこれをチェックしてください - https://developers.google.com/appengine/docs/java/tools/localunittesting/javadoc/com/google /appengine/tools/development/testing/package-tree . 一つもないようです…

したがって、次のように JUnit で実行するコード スニペットがあるとします。

TaskOptions taskOptions = TaskOptions.Builder.withUrl(PageConstant.PROCESS_CSV_FILE)
                                .param("blobId", blobId)
                                .param("drive", csvUploadFileModel.getDriveStatus())
                                .param("sites", csvUploadFileModel.getSitesStatus())
                                .header("Host", BackendServiceFactory.getBackendService().getBackendAddress("backend-1"))
                                .method(Method.POST);

次の例外がスローされます。

Caused by: java.lang.NullPointerException
    at com.google.appengine.api.backends.BackendServiceImpl.getDevAppServerLocalAddress(BackendServiceImpl.java:70)
    at com.google.appengine.api.backends.BackendServiceImpl.getBackendAddress(BackendServiceImpl.java:43)

そのような問題を解決する方法のアイデアはありますか?

4

1 に答える 1

1

残念ながら、Google はこの機能を提供していません。

テスト用のモックを作成することで、これを回避しました。

public class BackendServiceFactory {

public static BackendService getBackendService() {
    return new MockBackendService();
}

public static class MockBackendService implements BackendService {

    /*
     * (non-Javadoc)
     * @see com.google.appengine.api.backends.BackendService#getBackendAddress(java.lang.String)
     */
    @Override
    public String getBackendAddress(String arg0) {
        return "localhost:8080";
    }

    /*
     * (non-Javadoc)
     * @see com. google.appengine.api.backends.BackendService#getBackendAddress(java.lang.String,
     * int)
     */
    @Override
    public String getBackendAddress(String arg0, int arg1) {
        // TODO Auto-generated method stub
        return null;
    }

    /*
     * (non-Javadoc)
     * @see com.google.appengine.api.backends.BackendService#getCurrentBackend()
     */
    @Override
    public String getCurrentBackend() {
        // TODO Auto-generated method stub
        return null;
    }

    /*
     * (non-Javadoc)
     * @see com.google.appengine.api.backends.BackendService#getCurrentInstance()
     */
    @Override
    public int getCurrentInstance() {
        // TODO Auto-generated method stub
        return 0;
    }

}
}

ただし、バックエンドが構成された開発サーバーを実行している場合、タスク キューは機能しません。この問題を確認する必要があります(2011 年以降)。

于 2013-04-25T06:23:05.420 に答える