java - 使用 ApprovalTest 验证多个图像

标签 java approval-tests

我有一个生成一些图像(1.jpg、2.jpg...)并将它们写入文件系统的方法。我想用 ApprovalTest 验证这个方法的结果。问题是 Approvals.verify(image) 将接收和批准的文件命名为测试方法的名称。所以我无法通过一次测试验证多张图像。

如何在一次测试中验证多张图片?

最佳答案

您可以使用 NamerFactory 更改附加到文件末尾的信息。为下次测试。

[TestFixture]
class Program
{
    [Test]
    [UseReporter(typeof(WinMergeReporter))]
    public void Test1()
    {
        var image1 = @"firstImage.png";
        var image2 = @"secondImage.png";

        NamerFactory.AdditionalInformation = Path.GetFileNameWithoutExtension(image1);
        ApprovalTests.Approvals.Verify(image1);

        NamerFactory.AdditionalInformation = Path.GetFileNameWithoutExtension(image2);
        ApprovalTests.Approvals.Verify(image2);
    }
}

Approval Tests 在结束前创建了两个带有 firstImagesecondImage 的文件。为清楚起见,请参阅屏幕截图:

enter image description here

我的对象是字符串,但对于您的图像,所有对象都是一样的。您可以像以前一样调用 Approvals.Verify(image),但只需像示例中那样更改 AdditionalInformation

注意:我不太建议在一次测试中验证两个图像,因为如果一个验证失败 - 下一个验证将不会执行。并且 Approval Tests 无法连接图像并一步验证它们,至少如果您自己执行此操作。

编辑:为Java尝试使用,位于NamerFactory

public static void asMachineSpecificTest(Function0<String> environmentLabeller)
{
    additionalInformation = environmentLabeller.call();
}

并提供适当的函数,它将返回您的图像的名称

关于java - 使用 ApprovalTest 验证多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155409/

相关文章:

java - 如何从另一个类获取 ArrayList 以显示在 JComboBox 中?

一行中来自 Scanner 的 Java 输入日期

visual-studio-2010 - 是什么导致消息 "Approvals is not set up to use your test framework."?

visual-studio - 如何解决此错误 : vstest.executionengine.x86.exe 已停止工作?

jakarta-ee - 如何在需要应用服务器运行的遗留代码上有效地使用 ApprovalTests?

java - 服务器响应(JSON 格式)到数组转换

java - 从 JDBC 结果集中获取 XML 的最佳方式

java - EJB 的默认类路径是什么?

c# - 如何将批准测试的批准文件放在自己的文件夹中?

c# - 除非打开 diff 工具,否则 ApprovalTests DiffReporter 不会弹出 diff 窗口