我们的自动化测试系统出现了一个奇怪的问题。这是一个 Windows Server 2016 VM,它围绕我们的业务应用程序运行各种自动化功能测试。在某些测试中,我们会生成表示图表等的图像文件 (.png)。这些图像是使用针对 Win32 GDI API 的代码生成的。这些图像文件与存储在测试系统中的现有文件进行二进制比较,以查看是否存在任何功能回归。只要它们不匹配,相应的测试就会变成红色。
供参考,如果它可能相关,测试本身是通过计划的 TFS(MS Team Foundation Server)任务运行的,并且在执行这些测试的机器上运行 TFS 代理服务。
现在经常会发生这种情况,尽管功能上没有改进,但生成的图像略有不同。这显然非常烦人,因为它毫无理由地破坏了测试。
我已经追踪了字体在图表上呈现方式的这些变化。(抱歉,由于商业机密,我不能发布示例。)但差异似乎是字符与背景混合时抗锯齿方式的细微差异。我做了一些实验,例如发现 Windows ClearType 设置会影响结果,但我不知道在我的特定情况下确切的原因是什么。
但无论如何,只要没有人改变这些设置,我希望每次测试运行的结果都是相同的。
现在的问题是,白天不同的人会通过 Windows RDP(远程桌面 - 使用与 TFS 代理相同的帐户!)连接到该计算机。(测试在夜间进行)
我怀疑在这些连接期间,Windows 渲染子系统会以某种方式适应远程桌面的设置。从而更改一些渲染选项并产生不同的图像。
我的问题是:
我是否可以以某种方式强制 Windows(最好是通过编程)将 Windows 渲染子系统重置为默认值,以便每次渲染图像时都产生相同的结果?
或者,我可以指示 Windows,使其在接受 RDP 连接时绝不更改其任何渲染选项吗?