C# 程序问题:.json 文件内容被操纵

问题描述 投票:0回答:1

我遇到了一个 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);
       
    }
  • 确保文件被覆盖:我在写入之前检查了文件是否已删除。
  • 添加调试语句:我添加了调试语句以确保写入文件的代码确实被执行。
  • 检查站点地图是否正确更新:我在编写站点地图之前检查了站点地图的内容。
  • 清除缓存:我尝试通过在写入之前删除文件并确保没有缓存旧数据来清除缓存。
  • 重新启动

提前谢谢您!

我希望这有帮助!如果您需要任何进一步的调整,请告诉我。 😊

c# json selenium-webdriver testing automated-tests
1个回答
0
投票

它是否产生任何异常或者是否完全运行?

确保在删除行后删除文件:

Debug.Assert(!File.Exists(filePath), "File was not deleted successfully.");

还要检查文件是否处于只读模式,您可以使用以下命令更改它:

var fileInfo = new FileInfo(filePath);
if (fileInfo.Exists && fileInfo.IsReadOnly)
{
    fileInfo.IsReadOnly = false;
}
© www.soinside.com 2019 - 2024. All rights reserved.