3

いくつかの画像 (1.jpg、2.jpg...) を生成してファイル システムに書き込むメソッドがあります。このメソッドの結果を ApprovalTest で検証したい。問題はApprovals.verify(image)、テストメソッドの名前が付けられているように、受信および承認されたファイルに名前を付けることです。そのため、1 回のテストで複数の画像を検証することはできません。

1 回のテストで複数の画像を検証するにはどうすればよいですか?

4

2 に答える 2

5

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 Testsend の前にfirstImageと で2 つのファイルを作成しました。secondImage明確にするためにスクリーンショットを参照してください。

ここに画像の説明を入力

私のオブジェクトは文字列ですが、あなたの画像はすべて同じです。前と同じように呼び出しますが、例のようにApprovals.Verify(image)変更するだけAdditionalInformationです。

注: 1 つのテストで 2 つのイメージを検証することはあまりお勧めしません。1 つの検証が失敗すると、次の検証が実行されないためです。また、承認テストが画像を連結して 1 つのステップで検証する方法はありません (少なくともこれを自分で行う場合)。

編集: Javaの場合は、使用してみてください。NamerFactory

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

画像の名前を返す適切な関数を提供します

于 2013-01-06T10:23:39.850 に答える
2

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");
  }
}
于 2013-01-22T18:43:51.680 に答える