0

50 の奇妙な WebElements を含むページがあり、正しいテキストを持っていると断言したいと思います。私はページオブジェクトを使用しているので、テストはオブジェクトから分離されており、テストはアサーションが存在する必要がある場所です。

要素ごとに 50 個の個別の @Test を使用したくないので、テキスト値を保持してそれぞれに対してアサートするために、ある種のコレクション、リスト、または配列が必要です。ただし、1 つのテキスト値が間違っている場合にテストが失敗することは望ましくありません (頻繁に更新され、50 個の値を含むページで発生する可能性が高いシナリオ)。これは、アサーションごとに @Test を分離することを示していますか?

だから私は、PageObject.

次に、できれば 1 つのメソッドで、.getText()) を使用して、WebElement の値を文字列としてテスト クラスに渡す必要があります。

テスト クラスの 50 個の値のそれぞれについて、できれば 1 つの @Test の下でテキストが正しいことをアサートする必要がありますが、1 つの値が正しくない場合にテストが失敗することはありません。

私はこれに数時間取り組んできました。これが不明確である場合は申し訳ありません。また、テキストのチャンクについてお詫び申し上げます。私は初心者のようなものです - 明確にすることができれば、尋ねてください。これには明らかに、私が見逃している一般的なアプローチがあります。

ありがとう

4

1 に答える 1

1

JUnit 4.0 以降を使用している場合は、パラメーター化されたテストを使用できます。

  • 注釈付きのテスト クラス@RunWith(Parameterized.class)
  • 注釈付きの静的メソッド@Parameters(これは入れ子になったパラメーターの配列を返します)
  • クラスのテストは、パラメーターのセットごとに 1 回実行されます

上記の wiki リンクからの例:

@RunWith(Parameterized.class)
public class FibonacciTest {
    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {

                 { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },{ 6, 8 }  
           });
    }

    private int fInput;

    private int fExpected;

    public FibonacciTest(int input, int expected) {
        fInput= input;
        fExpected= expected;
    }

    @Test
    public void test() {
        assertEquals(fExpected, Fibonacci.compute(fInput));
    }
}
于 2014-01-22T21:37:37.843 に答える