Проверьте несколько изображений с 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");
}
}