如何测试App Engine SDK 1.7.0(Java)中是否删除了blob?

时间:2012-06-29 20:54:34

标签: google-app-engine blob

将App Engine SDK更新到1.7.0后,我们的某些单元测试开始失败。

在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
    }

应该删除blob,但是可以为它打开一个频道......

那么,任何关于如何检查删除的想法都是在单元测试中成功的吗?

2 个答案:

答案 0 :(得分:1)

尝试使用blobstoreService.fetchData检索文件的第一个字节。

如果文件不存在,它将抛出。

答案 1 :(得分:0)

App Engine尚不支持JDK 1.7。