我刚发现,使用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>

请注意出现的原始代码,以使用一个列表的地图,而不是因为它似乎更简单的方法,以提供一组字符串[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

请注意您的测试方法可以声明或者“对象...”或“对象[]”(它是相同的编译器)。

其他提示

我会用TestNG的和其DataSource构建为做到这一点的正确方法。你当然可以使这个Spring配置,但因为它是测试代码,我认为TestNG的是更自然的归宿吧。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top