【发布时间】:2021-11-18 13:18:39
【问题描述】:
因此,我面临着完美主义者与敏捷效率工程师之间的对峙。
我有一个 Azure 函数,它将使用 Open XML SDK 来执行一些基本功能 - 例如,它将 cmets 添加到 Word 文档中。
为简单起见,我将所有 Open XML SDK 代码打包并模块化为一个单独的内部 API,以便我可以调用如下方法:
WordDocuments.AddComment(documentStream, "I'm looking for this text", "Author", "This is my comment");
到目前为止,我在项目的大部分内容中都有广泛的单元测试覆盖范围,从单个内部功能级单元测试到 Azure Function 端点的部署后端到端集成测试。
但是,面对这个特殊的问题,我有点进退两难。
一组明显的测试步骤可能是:
- 提交文档(通过内存流)
- 调用“AddComment”函数
- 断言评论已添加到更新的流中
// ARRANGE
var fileName = $@"{Directory.GetCurrentDirectory()}\Documents\Word.docx";
var bytes = File.ReadAllBytes(fileName);
using (var stream = new MemoryStream())
{
stream.Write(bytes, 0, bytes.Length);
// ACT
WordDocuments.AddComment(stream,
"the text we are looking for"
"Martin Hatch", // author of the comment
"MH", // initials for the author
"the comment text");
}
// ASSERT
Assert.IsTrue(WordDocuments.GetComments(stream).Any(c => c.Author == "Martin Hatch" && c.Text == "the comment text"));
}
但是 - 这让我有点吃不消。如果不使用 Open XML SDK 本身,我无法“断言”已添加评论。
现在 - 编写一大堆单独的 Open XML SDK 代码似乎完全没有意义,因为我已经将它们全部包装在我的“WordDocuments”API 类中。
但是 - 我应该使用自己的 API 来断言使用相同 API 的操作吗?
这感觉有点像内部循环/测试失败。
所以我想真正的问题是:
当断言需要您正在测试的完全相同的代码时,您如何测试代码?
编辑 - 我现在实际上已经更新了主标题,因为我觉得它更有意义
原标题:“您将如何使用 Open XML SDK 测试代码?”
【问题讨论】:
标签: unit-testing openxml-sdk microsoft-unit-testing