asp.net 某些单元测试在Azure上失败,但在本地通过

tyu7yeag  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(111)

发生了什么。我们有一个服务在我们的项目,生成PDF文档。所以,我们有测试,检查两个文档是否相等。第一个文档,称为“预期”,我们已经在基线文件夹中本地作为模板文档。第二个文档,称为“实际”或“结果”,由我们的服务自动生成。下面的代码:

[TestMethod]
    public void PdfExportProviderTest()
    {
        var document = GetDocument("Pdf document");

        IExportProvider pdfExportProvider = new PDFExportProvider();
        var stream = pdfExportProvider.Export(document, DisplayUnits.Imperial);

        var resultPdf = Encoding.UTF8.GetString(stream.ToArray());
        var expectedPdf = GetPdfByName("ExpectedDocument.pdf");

        Assert.IsTrue(Clear(expectedPdf).Equals(Clear(resultPdf), StringComparison.InvariantCulture));
    }

字符串
(清除方法从PDF中删除所有随机或动态生成的信息(如创建信息,ID等)
正如你所看到的,我们将PDF文件转换为两个UTF-8字符串并进行比较。所有测试都在本地成功通过。但是当我们将其推送到Azure上时,Azure Pipeline会生成报告,其中一些(不是所有!)PDF测试失败。我已经尝试过:
1.已将结果和实际字符串转换为一个编码(UTF-8)-无结果
1.使用以下表达式删除隐藏的非打印符号:Regex.Replace(text.Trim(),@"[^\u0009\u000A\u000D\u0020-\u007E]",“*”);
1.我生成了差异来检查,Azure上出了什么问题,当我生成这些文件时,我看到,那些行,可能不同-其中等于。
1.我通过在Equals方法中设置第二个选项“StringComparison.CurrentCulter”来使用相同的Culture。
1.所有.cs文件都是UTF-8编码的。

gt0wga4j

gt0wga4j1#

根据所提供的信息,问题可能在于“GetDocument”。我会检查以确保GetDocument实际上在Azure中返回文档。如果文档是解决方案的一部分,请确保它与构建构件一起复制,并且您的构建代理可以访问它。如果文档是从外部源获取的,请使用模拟框架(Moq是一个很好的例子)并模拟文档以供测试使用。

相关问题