C# 使用ApprovalTests.Net指定测试输出路径以支持多个文件

C# 使用ApprovalTests.Net指定测试输出路径以支持多个文件,c#,asp.net,pdf,approval-tests,C#,Asp.net,Pdf,Approval Tests,我正在编写一个从HTML标记生成PDF文件的应用程序(使用第三方库) 我希望能够对这些PDF文件的输出进行批准测试,因此我一直在查看ApprovalTests.Net库 我的问题是,ApprovalTests.Net本机支持PDF相等性检查,但每次生成PDF文件时,PDF生成工具都会生成细微不同的内部标记。(字体文件名被压缩并随机化,文件id的更改等) 实现良好的批准测试的最佳方法似乎是将PDF文档展平为一系列图像,并使用二进制比较/加载图像差异工具对文档进行批准测试 这一切都相当琐碎 我的问题

我正在编写一个从HTML标记生成PDF文件的应用程序(使用第三方库)

我希望能够对这些PDF文件的输出进行批准测试,因此我一直在查看
ApprovalTests.Net

我的问题是,
ApprovalTests.Net
本机支持PDF相等性检查,但每次生成PDF文件时,PDF生成工具都会生成细微不同的内部标记。(字体文件名被压缩并随机化,文件id的更改等)

实现良好的批准测试的最佳方法似乎是将PDF文档展平为一系列图像,并使用二进制比较/加载图像差异工具对文档进行批准测试

这一切都相当琐碎

我的问题出现在处理多页pdf文档时。每一页都会产生一个新的图像,因此我的测试需要在每一页上循环,并对照批准的文件进行检查

我似乎找不到任何文档来指定批准的文件名

任何具有批准测试框架工作经验的人都能提供一些见解吗

或者,是否有其他框架允许我测试一组图像


谢谢。

创建ApprovalBinaryWriter的新派生类,重写GetApprovalFilename和GetReceivedFilename,并将索引注入构造函数

public class CustomBinaryWriter : ApprovalBinaryWriter
{
    private readonly int _index;

    public CustomBinaryWriter(byte[] data, string extensionWithoutDot, int index)
        : base(data, extensionWithoutDot)
    {
        _index = index;
    }

    public override string GetApprovalFilename(string basename)
    {
        return string.Format("{0}_{1}{2}{3}", basename, _index, WriterUtils.Approved, ExtensionWithDot);
    }

    public override string GetReceivedFilename(string basename)
    {
        return string.Format("{0}_{1}{2}{3}", basename, _index, WriterUtils.Received, ExtensionWithDot);
    }
}
那你就可以把这个叫做

Approvals.Verify(new CustomBinaryWriter(doc, "png", 1));