我刚刚发现了一个使用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]列表。
答案 0 :(得分: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 []”(它与编译器相同)。
答案 1 :(得分:1)
我会使用TestNG及其DataSource构造作为执行此操作的正确方法。你当然可以制作这个Spring配置,但由于它是测试代码,我认为TestNG更适合它。