簡體   English   中英

自動化測試 OpenXML SDK

[英]Automated Testing OpenXML SDK

我正在使用內容控件和 OpenXML SDK 實現 ms word 文檔生成。 我想對該代碼進行一些自動化測試(單元測試或一些簡單的 UI 自動化測試)。

有沒有人有測試 MS Word 文檔生成的經驗? 有哪些可能的選擇?

提前致謝!

不,我沒有對 MS Word 文檔生成進行過單元測試,但正如 Ingó Vals 所說,它應該與任何其他形式的單元測試沒有任何不同。

1) [可選 - 確保您了解 SDK 的正確用法以滿足您的需要]。 確定您的應用應如何驅動 SDK。 編寫一些模擬預期功能的測試腳本,並確保它們生成的 Word 文檔符合您的期望。

2) 創建一個接口(或多個接口),其中包含與生成文檔所需的功能相對應的方法。 注意:該接口不需要提供 OpenXML SDK 的全部功能 - 只需提供您的應用程序所需的功能。

3) 創建接口的具體實現,它將調用轉發到 OpenXML SDK

4) 利用您在應用程序中創建的界面來執行文檔生成。

5) 使用 NUnit 和 NMock(或類似的)編寫驅動應用程序生成層的單元測試。 這些測試應該使用模擬接口,而不是具體實現的實例。 您現在可以在測試中斷言生成層的行為符合您的預期。

我實際上正在做一些與用於電子表格的 OpenXML SDK 類似的事情,我實際上只是編寫了 OpenXML api 代碼,用於從流中打開文件以進行測試。 單元測試並不能真正告訴您足夠的信息,因為您需要知道它是否是有效文件。

// There should be a sheet for every team
[TestMethod]
[HostType("Moles")]
public void CaseExportTeamSheetsTest()
{
    IRepository<ServiceTbl, ServiceTbl> ServiceRepository;
    CaseController target;
    BuildCaseControllerMoledCases(out ServiceRepository, out target);
    FileStreamResult actual = target.Export();   using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(actual.FileStream, false))
    {
        var services = ServiceRepository.All;

        foreach (var item in services)
        {
            // get a worksheet foreach service
            var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == item.ServiceName);
            Assert.IsTrue(sheets.Count() > 0);
        }
    }

    actual.FileStream.Close();
    actual.FileStream.Dispose();
}

關於 OpenXml Sdk 2.0 和有效代碼的警告....

我生成了 OpenXml Powerpoints 文檔,該文檔使用 XML SDK 2.0 工具進行驗證並在我的 PC 上的 Office 2007 中工作,但是當使用 Office Powerpoint 2007 在另一台機器上打開文檔時,它抱怨並說格式無效

XML Sdk 2.0 http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

測試 Microsoft Word 文檔生成的高級方法如下:

  1. 定義測試用例,其中每個用例包括:

    • 生成器輸入,即用於生成Word文檔的數據;
    • Open XML 格式的預期輸出,即表示正確生成的 Word 文檔的 Open XML 標記。
  2. 使用您最喜歡的單元測試框架(例如,xUnit)編寫測試方法。 使用典型的“安排、行動、斷言”模式,這些測試方法:

    • 根據需要設置發電機、發電機輸入和預期的發電機輸出;
    • 運行生成器,提供生成器輸入並捕獲實際生成器輸出;
    • 將實際的發電機輸出與預期的發電機輸出進行比較。

使用 Open XML SDK 檢索實際的生成器輸出非常容易。 在比較實際輸出和預期輸出時,您可以應用不同級別的標記過濾或簡化。 例如,您可以關注基本標記,例如問題中提到的內容控件( w:sdt元素)。

暫無
暫無

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

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