Все, я новичок в 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");
}
}
}
Эта ошибка возникает, когда ваш код изменяется во время выполнения. Чтобы помочь отладить это, можете ли вы запустить базовый пример в документах? работая с основным, глядя на него, а затем расширять его для ваших нужд может работать. – Patrice
Вы хотите протестировать код, который будет запущен внутри App Engine или кода, который будет запускаться из какой-либо другой вычислительной среды и использовать API облачного хранилища данных? Ваш пример кода смешивает эти два сценария, и они в настоящее время не совместимы друг с другом. –