2012-04-05 7 views
0

Странная вещь здесь. При выполнении любого модульного тестирования, который вызывает:Незаконная ошибка blobKey в модульном тесте google app engine 1.6.4

FileService fileService = FileServiceFactory.getFileService(); 
writeChannel = fileService.openWriteChannel(file, lock); 
writeChannel.closeFinally(); 

я получаю следующее исключение - код работает нормально вне модульного тестирования и на других рабочих станциях - так это проблема окружающей среды на ноутбуке окна XP я буду вынужден использовать , Тесты работать нормально на других моих ПК и ноутбуках (работает убунт)

java.lang.RuntimeException: illegal blobKey: pIONuF92LGIK8TV41YSSdQ 
    at com.google.appengine.api.blobstore.dev.FileBlobStorage.getFileForBlob(FileBlobStorage.java:95) 
    at com.google.appengine.api.blobstore.dev.FileBlobStorage.storeBlob(FileBlobStorage.java:45) 
    at com.google.appengine.api.files.dev.BlobstoreFile.getOutputStream(BlobstoreFile.java:225) 
    at com.google.appengine.api.files.dev.FileMetadata.setFinalized(FileMetadata.java:97) 
    at com.google.appengine.api.files.dev.BlobstoreFile.setFinalized(BlobstoreFile.java:212) 
    at com.google.appengine.api.files.dev.LocalFileService.close(LocalFileService.java:334) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.callInternal(ApiProxyLocalImpl.java:498) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:452) 
    at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:430) 
    at java.util.concurrent.Executors$PrivilegedCallable$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.util.concurrent.Executors$PrivilegedCallable.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

Я только что подтвердил разницу между рабочей станцией с ошибкой. Я использовал Google App Engine 1.6.4 SDK - у остальных подоконников был 1.6.3.1. Это ошибка в 1.6.4, о которой я расскажу. – bsautner

+0

ошибка: http: //code.google.com/p/googleappengine/issues/detail? Id = 7291 – bsautner

ответ

3

Вы можете избежать этого, добавив LocalBlobstoreServiceTestConfig() для вашей установки LocalServiceTestHelper. Я просто получил его работу после добавления этого в тестовый класс, который терпел неудачу.

Я не уверен, действительно ли это ошибка. Я полагаю, что ошибка была раньше, когда SDK обеспечивал локальную эмуляцию blobstore без надлежащей настройки тестовой настройки.

+0

согласен: http://code.google.com/p/googleappengine/issues/detail?id=7291 – bsautner

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