10

我正在使用内容控件和 OpenXML SDK 实现 ms word 文档生成。我想对该代码进行一些自动化测试(单元测试或一些简单的 UI 自动化测试)。

有没有人有测试 MS Word 文档生成的经验?有哪些可能的选择?

提前致谢!

4

4 回答 4

6

不,我没有对 MS Word 文档生成进行单元测试,但正如 Ingó Vals 所说,它与任何其他形式的单元测试应该没有什么不同。

1) [可选 - 以确保您了解 SDK 的正确用法以满足您的需求]。确定您的应用程序应如何驱动 SDK。编写一些模拟预期功能的测试脚本,并确保它们生成的 Word 文档符合您的期望。

2) 创建一个接口(或多个接口),其中包含与生成文档所需的功能相对应的方法。注意:该接口不需要提供 OpenXML SDK 的全部功能 - 只需提供您的应用程序所需的功能。

3) 创建接口的具体实现,将调用转发到 OpenXML SDK

4) 利用您在应用程序中创建的界面来执行文档生成。

5) 使用 NUnit 和 NMock(或类似的)编写驱动应用程序生成层的单元测试。这些测试应该使用模拟接口,而不是具体实现的实例。您现在可以在测试中断言您的生成层的行为符合您的预期。

于 2010-08-12T15:54:46.607 回答
2

我实际上正在使用用于电子表格的 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();
}
于 2011-04-06T16:34:45.327 回答
0

关于 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

于 2010-08-24T11:50:01.297 回答
0

测试 Microsoft Word 文档生成的高级方法如下:

  1. 定义测试用例,每个测试用例包括:

    • 生成器输入,即用于生成 Word 文档的数据;和
    • Open XML 格式的预期输出,即表示正确生成的 Word 文档的 Open XML 标记。
  2. 使用您最喜欢的单元测试框架(例如,xUnit)编写测试方法。使用典型的“Arrange, Act, Assert”模式,这些测试方法:

    • 根据需要设置生成器、生成器输入和预期生成器输出;
    • 运行生成器,提供生成器输入并捕获实际生成器输出;和
    • 将实际的发电机输出与预期的发电机输出进行比较。

使用 Open XML SDK 很容易检索实际的生成器输出。在比较实际输出和预期输出时,您可以应用不同级别的标记过滤或简化。例如,您可以专注于基本标记,例如w:sdt问题中提到的内容控件(元素)。

于 2019-11-16T20:14:44.020 回答