我遇到了一个 C# 测试程序的特定问题,该程序导航网站并截取各种页面和对话框的屏幕截图。这些屏幕截图保存在 .zip 文件中,并在测试结束时创建 sitemap.json 文件。这种机制工作正常,但 .json 文件的内容不会改变。 .json 文件还有一个时间戳 - 例如,如果我今天和明天开始测试,文件内容仍然是今天的内容。唯一的解决方案是在代码中为 .json 文件指定一个新名称(例如 sitemap2.json),否则它不会改变。
当我运行多个测试时,.zip 文件始终会被替换并正常工作,但 sitemap.json 文件也会被替换,但其内容不会更改。这意味着,如果我运行一次测试并获取 sitemap.json 文件,我总是会再次获取完全相同的 sitemap.json 文件,即使我删除它和/或运行不同的测试。
这是我的代码的相关部分:
private void WriteSitemap()
{
System.IO.Directory.CreateDirectory(@"d:\sitemap");
var json = JsonSerializer.Serialize(Sitemap);
var filePath = @"d:\sitemap\sitemap2.json";
if (File.Exists(filePath))
{
File.Delete(filePath);
}
File.WriteAllText(filePath, json, Encoding.UTF8);
var byteArray = GetScreenshotsZip();
if (byteArray == null) return;
File.WriteAllBytes(@"d:\sitemap\sitemap-screenshots.zip", byteArray);
}
提前谢谢您!
我希望这有帮助!如果您需要任何进一步的调整,请告诉我。 😊
它是否产生任何异常或者是否完全运行?
确保在删除行后删除文件:
Debug.Assert(!File.Exists(filePath), "File was not deleted successfully.");
还要检查文件是否处于只读模式,您可以使用以下命令更改它:
var fileInfo = new FileInfo(filePath);
if (fileInfo.Exists && fileInfo.IsReadOnly)
{
fileInfo.IsReadOnly = false;
}