0

Spring を使用してデータ ソースを提供する TestNG テスト ケースを見つけました。その結果、コードは非常にクリーンで簡潔になります。

ただし、入力の変数リストを取得できるように、テスト ケースを拡張する必要があります。

以下で試みたように、リストのリストに Bean 参照を使用して立ち往生していますか? それを行う方法はありますか (つまり、入力とそれに続く出力の論理フローを分割しない)。より良い方法はありますか?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="stringPatternRegexMap" class="java.util.HashMap">
        <constructor-arg>
            <map>
                <entry key="some input #1" value="expected output #1"/>
                <entry key="some input #2" value="expected output #2"/>
                <entry key="some input #3" value="expected output #3"/>
                <entry key-ref="multi-list-1" value="expected output #3"/>
                <entry key-ref="null-reference" value="null-reference"/>
            </map>
        </constructor-arg>
    </bean>

    <bean id="multi-list-1">
            <list>
                    <value>apple</value>
                    <value>banana</value>
                    <value>orange</value>
            </list>
    </bean>

    <bean id="null-reference">
            <value>
                    <null/>
            </value>
    </bean>
</beans>

String[2] のリストを提供する方が簡単な方法であるため、元のコードではリストの代わりにマップを使用しているように見えることに注意してください。

4

2 に答える 2

2

いいえ、 @DataProvider を使用して、可変数のパラメーターをテスト メソッドにフィードできます。

  @DataProvider
  public Object[][] dp() {
    return new Object[][] {
        new Object[] { new Object[] { "a" } },
        new Object[] { new Object[] { "b", "c" } },
    };
  }

  @Test(dataProvider = "dp")
  public void g1(Object... params) {
    System.out.println("Received " + params.length + " parameters");
  }

印刷されます:

Received 1 parameters
Received 2 parameters

テスト メソッドは、"Object..." または "Object[]" のいずれかを宣言できることに注意してください (コンパイラと同じです)。

于 2009-11-19T01:59:47.090 に答える
1

これを行う正しい方法として、TestNG とその DataSource コンストラクトを使用します。確かにこの Spring 構成を作成できますが、これはテスト コードであるため、TestNG がより自然なホームになると思います。

于 2009-11-18T01:52:33.827 に答える