簡體   English   中英

一些單元測試在 Azure 上失敗,但在本地通過

[英]Some of unit tests failed on Azure but passed locally

發生了什么。 我們有一個生成 PDF 文檔的 in out 項目服務。 所以,我們有測試來檢查兩個文檔是否相等。 第一個文檔,稱為“預期”,我們已經在本地作為基線文件夾中的模板文檔。 第二個文檔,稱為“實際”或“結果”,由我們的服務自動生成。 這里的代碼:

    [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) - 沒有結果
  2. 使用此表達式刪除隱藏的非打印符號: Regex.Replace(text.Trim(), @"[^\ \ \ \ -\~]", "*");
  3. 我生成了要檢查的差異,Azure 上有什么問題,當我生成這些文件時,我看到,那幾行​​可能會有所不同 - 相等的地方。
  4. 我通過在 Equals 方法中設置第二個選項“StringComparison.CurrentCulter”來使用相同的文化。
  5. 所有 .cs 文件都是 UTF-8 編碼的。

所以,如果你有任何想法,請幫助我。 謝謝。

根據所提供的信息,問題可能出在“GetDocument”上。 我會檢查以確保 GetDocument 實際上正在返回 Azure 中的文檔。 如果該文檔是解決方案的一部分,請確保它與構建工件一起復制,並且您的構建代理可以訪問它。 如果文檔是從外部來源獲取的,則使用模擬框架(Moq 是一個很好的框架)並模擬文檔以供測試使用。

我還沒有 50 個代表,所以我無法回復任何評論。 祝你好運。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM