2015-08-27 4 views
1

Все, я новичок в GCD и хочу настроить свою LocalTestEnvironment. Я успешно установил локальную среду GCD. Я этой ссылке, чтобы сделать некоторые Модульное тестирование https://cloud.google.com/appengine/docs/java/tools/localunittestingТестирование локального блока Datastore

Однако, я получаю следующее сообщение об ошибке в то время как работает простой, как показано ниже запроса

Exception in thread "main" java.lang.AbstractMethodError: com.google.appengine.tools.development.testing.TestLocalServerEnvironment.enforceApiDeadlines()Z 
    at com.google.appengine.tools.development.ApiProxyLocalImpl.makeAsyncCall(ApiProxyLocalImpl.java:206) 
    at com.google.apphosting.api.ApiProxy.makeAsyncCall(ApiProxy.java:201) 
    at com.google.appengine.api.datastore.DatastoreApiHelper.makeAsyncCall(DatastoreApiHelper.java:106) 
    at com.google.appengine.api.datastore.QueryRunnerV3.runQuery(QueryRunnerV3.java:36) 
    at com.google.appengine.api.datastore.PreparedQueryImpl.runQuery(PreparedQueryImpl.java:31) 
    at com.google.appengine.api.datastore.PreparedQueryImpl.asIterator(PreparedQueryImpl.java:52) 
    at com.google.appengine.api.datastore.PreparedMultiQuery$FilteredMultiQueryIterator.makeQueryIterator(PreparedMultiQuery.java:233) 
    at com.google.appengine.api.datastore.PreparedMultiQuery$FilteredMultiQueryIterator.<init>(PreparedMultiQuery.java:201) 
    at com.google.appengine.api.datastore.PreparedMultiQuery.newFilteredMultiQueryIterator(PreparedMultiQuery.java:425) 
    at com.google.appengine.api.datastore.PreparedMultiQuery.asIterator(PreparedMultiQuery.java:418) 
    at com.google.appengine.api.datastore.BasePreparedQuery$1.iterator(BasePreparedQuery.java:25) 
    at MultiFilterQuery.main(MultiFilterQuery.java:36) 

Мои Testcode

import com.google.appengine.api.datastore.DatastoreServiceFactory; 
import com.google.appengine.api.datastore.DatastoreService; 
import com.google.appengine.api.datastore.Query.Filter; 
import com.google.appengine.api.datastore.Query.FilterPredicate; 
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; 
import com.google.appengine.tools.development.testing.LocalServiceTestHelper; 
import com.google.appengine.api.datastore.Query.FilterOperator; 
import com.google.appengine.api.datastore.Query.CompositeFilter; 
import com.google.appengine.api.datastore.Query.CompositeFilterOperator; 
import com.google.appengine.api.datastore.Query; 
import com.google.appengine.api.datastore.PreparedQuery; 
import com.google.appengine.api.datastore.Entity; 
import com.google.api.services.datastore.*; 
import com.google.api.services.datastore.client.Datastore; 
import com.google.api.services.datastore.client.DatastoreHelper; 

import java.util.*; 
import static com.google.api.services.datastore.client.DatastoreHelper.makeValue; 

public class MultiFilterQuery { 

public static void main(String args[]) { 
    //Datastore datastore = null; 
// datastore = DatastoreHelper.getDatastoreFromEnv(); 
    LocalServiceTestHelper helper = 
       new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); 
    helper.setUp(); 
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    List<String> Dept = Arrays.asList("ECE", "CSE"); 
    Filter DeptFilter = 
       new FilterPredicate("Department", 
            FilterOperator.IN, 
            Dept); 
    Query q = new Query("StudentMarks").setFilter(DeptFilter); 
    PreparedQuery pq = datastore.prepare(q); 
    for (Entity result : pq.asIterable()) { 
      String firstName = (String) result.getProperty("StudentName"); 
      String lastName = (String) result.getProperty("Department"); 
      Long height = (Long) result.getProperty("Email"); 

      System.out.println(firstName + " " + lastName + ", " + height + " inches tall"); 
     } 
} 

}

+0

Эта ошибка возникает, когда ваш код изменяется во время выполнения. Чтобы помочь отладить это, можете ли вы запустить базовый пример в документах? работая с основным, глядя на него, а затем расширять его для ваших нужд может работать. – Patrice

+0

Вы хотите протестировать код, который будет запущен внутри App Engine или кода, который будет запускаться из какой-либо другой вычислительной среды и использовать API облачного хранилища данных? Ваш пример кода смешивает эти два сценария, и они в настоящее время не совместимы друг с другом. –

ответ

0

Мы пытались запустить это из внешнего вычислительного механизма, но, тем не менее, я узнал из других форумов, API облачного хранилища данных для внешнего вычислительного механизма по-прежнему является бета-версией и множество функций не поддерживается. Также существует высокая латентность между Google Compute Engine и Datastore. Мы решили использовать Amazon Dynamodb для применения.

Смежные вопросы