將App Engine SDK更新至1.7.0後,部分單元測試開始失敗。如何測試App Engine SDK 1.7.0(Java)中是否刪除了blob?
在SDK 1.6.x的我斷言,一個blob被刪除這樣的:
try {
fileService.getBlobFile(blobKey);
Assert.fail("Blob not deleted: " + blobKey);
} catch (FileNotFoundException expected) {
// OK
}
在SDK 1.7.0 getBlobFile()不拋出FileNotFoundException異常了。
我試圖挑起一個例外,但沒有成功(沒有拋出異常):
try {
AppEngineFile blobFile = fileService.getBlobFile(blobKey);
boolean readable = blobFile.isReadable();
FileReadChannel channel = fileService.openReadChannel(blobFile, false);
channel.position(1);
try {
channel.close();
} catch (Exception e) {
// Silent
}
Assert.fail("Blob not deleted: " + blobKey);
} catch (Exception expected) {
// OK
}
團塊應該被刪除,但它是可以打開的通道吧...
那麼,任何想法如何檢查刪除在單元測試中是否成功?
這工作可靠,謝謝! –
也許我在SDK中發現了一個鬆散相關的錯誤:出於某種奇怪的原因,在我的測試中,在blobstoreService.fetchData後刪除一個blob總是失敗。相反,使用fileService.openReadChannel獲取數據後刪除blob可以正常工作。 這裏的例外: 產生java.io.IOException:無法刪除:\ WEB-INF \ AppEngine上生成\ feopHbOletLHZ7BzBqXMqQ \t在com.google.appengine.api.blobstore.dev.FileBlobStorage.deleteBlob(FileBlobStorage.java :44) \t at com.google.appengine.api.blobstore.dev.LocalBlobstoreService $ 1.run(LocalBlobstoreService.java:128) –
你可以在跟蹤器中打開一個問題嗎? –