1

将 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 应该被删除,但可以为它打开一个通道......

那么,有什么想法可以在单元测试中检查删除是否成功?

4

2 回答 2

1

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

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

于 2012-06-29T23:02:44.880 回答
0

App Engine 尚不支持 JDK 1.7。

于 2012-06-30T04:20:38.707 回答