2012-04-05 3 views
0

Seltsames passiert hier. Wenn jede Einheit Test ausgeführt wird, ruft:illegaler BlobKey-Fehler im Unit-Test Google App Engine 1.6.4

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

i die folgende Ausnahme erhalten - der Code ausgeführt wird außerhalb des Unit-Tests und auf anderen Arbeitsplätzen in Ordnung - es ist also ein Thema Umwelt auf einem Windows XP Laptop ist gezwungen, den ich zu verwenden . Tests laufen auf meinem anderen PC und Laptops (Ubuntu)

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

Ich habe gerade den Unterschied zwischen der Workstation mit dem Fehler bestätigt. Ich benutzte Google App Engine 1.6.4 SDK - die anderen Sill hatte 1.6.3.1. Dies ist ein Fehler in 1.6.4 Ich werde berichten. – bsautner

+0

Fehler gemeldet: http: //code.google.com/p/googleappengine/issues/detail?id=7291 – bsautner

Antwort

3

Sie diese durch Hinzufügen eines LocalBlobstoreServiceTestConfig vermeiden kann(), um Ihre LocalServiceTestHelper Setup. Ich habe es gerade funktioniert, nachdem ich das der fehlgeschlagenen Testklasse hinzugefügt habe.

Ich bin mir nicht sicher, ob das tatsächlich ein Fehler ist. Ich vermute, dass der Fehler zuvor war, als das SDK die lokale Blobstore-Emulation ohne die richtige Konfiguration der Testkonfiguration zur Verfügung stellte.

+0

vereinbart: http://code.google.com/p/googleappengine/issues/detail?id=7291 – bsautner