いくつかの画像 (1.jpg、2.jpg...) を生成してファイル システムに書き込むメソッドがあります。このメソッドの結果を ApprovalTest で検証したい。問題はApprovals.verify(image)
、テストメソッドの名前が付けられているように、受信および承認されたファイルに名前を付けることです。そのため、1 回のテストで複数の画像を検証することはできません。
1 回のテストで複数の画像を検証するにはどうすればよいですか?
いくつかの画像 (1.jpg、2.jpg...) を生成してファイル システムに書き込むメソッドがあります。このメソッドの結果を ApprovalTest で検証したい。問題はApprovals.verify(image)
、テストメソッドの名前が付けられているように、受信および承認されたファイルに名前を付けることです。そのため、1 回のテストで複数の画像を検証することはできません。
1 回のテストで複数の画像を検証するにはどうすればよいですか?
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
end の前にfirstImage
と で2 つのファイルを作成しました。secondImage
明確にするためにスクリーンショットを参照してください。
私のオブジェクトは文字列ですが、あなたの画像はすべて同じです。前と同じように呼び出しますが、例のようにApprovals.Verify(image)
変更するだけAdditionalInformation
です。
注: 1 つのテストで 2 つのイメージを検証することはあまりお勧めしません。1 つの検証が失敗すると、次の検証が実行されないためです。また、承認テストが画像を連結して 1 つのステップで検証する方法はありません (少なくともこれを自分で行う場合)。
編集: Javaの場合は、使用してみてください。NamerFactory
public static void asMachineSpecificTest(Function0<String> environmentLabeller)
{
additionalInformation = environmentLabeller.call();
}
画像の名前を返す適切な関数を提供します
Ilya の答えは正しいですが、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");
}
}
ps。これを次のリリースに追加するので、
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");
}
}