Проверьте несколько изображений с ApprovalTest

У меня есть метод, который генерирует несколько изображений (1.jpg, 2.jpg...) и записывает их в файловую систему. Я хочу проверить результаты этого метода с ApprovalTest. Проблема в том, что Approvals.verify(image) называет полученные и утвержденные файлы в качестве метода испытаний. Поэтому я не могу проверить более одного изображения с помощью одного теста.

Как я могу проверить несколько изображений в одном тесте?

2 ответа

Решение

Ты можешь использовать 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 создал два файла с firstImage а также secondImage до конца. Смотрите скриншот для ясности:

Мои объекты являются строками, но для ваших изображений все было бы одинаково. Вы бы позвонили Approvals.Verify(image) как и раньше, но просто меняется AdditionalInformation как в примере.

Примечание. Я бы не рекомендовал проверять два изображения в одном тесте, потому что, если один из них не пройдет проверку, следующие проверки не будут выполнены. Кроме того, в ходе проверочных испытаний нет возможности объединять изображения и проверять их за один шаг, по крайней мере, если вы делаете это самостоятельно.

Редактировать: для Java попробуйте использовать, расположенный на NamerFactory

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

и предоставить соответствующую функцию, которая будет возвращать имена ваших изображений

Илья ответил правильно, но в java он немного другой, поэтому я хотел опубликовать полный образец здесь:

package org.approvaltests.namer.tests;

import junit.framework.TestCase;

import org.approvaltests.Approvals;
import org.approvaltests.namer.NamerFactory;
import org.lambda.functions.Function0;

public class NamerFactoryTest extends TestCase
{
  public static class MultipleFiles implements Function0<String>
  {
    private int count = 1;
    @Override
    public String call()
    {
      return "" + (count++);
    }
  }
  public void testMultipleFiles() throws Exception
  {
    MultipleFiles f = new MultipleFiles();
    NamerFactory.asMachineSpecificTest(f);
    Approvals.verify("one");
    NamerFactory.asMachineSpecificTest(f);
    Approvals.verify("two");
  }
}

пс. Я добавлю это в следующий выпуск, так что это будет просто

package org.approvaltests.namer.tests;

import junit.framework.TestCase;

import org.approvaltests.Approvals;
import org.approvaltests.namer.MultipleFilesLabeller;
import org.approvaltests.namer.NamerFactory;

public class NamerFactoryTest extends TestCase
{
  public void testMultipleFiles() throws Exception
  {
    MultipleFilesLabeller labeller = NamerFactory.ApprovalResults.useMultipleFiles();
    Approvals.verify("one");
    labeller.next();
    Approvals.verify("two");
  }
}
Другие вопросы по тегам