我需要向TestNG数据提供程序传递10多个参数,代码如下所示。。。
@Test (dataProvider = "Dataprovider1")
public void testScenario1(String data1, String data2,
String data3, String data4,
String data5 //...
) throws Exception {
System.out.println(data1+"---------------- "+data2+" --------------- "+data3+" .. so on");
}
有谁能告诉我,如果我们需要使用DataProvider传递10个以上的参数,我们应该采取什么方法?是否有其他方法来声明测试方法的参数?
当您这样做时,DataProvider最终会出现一种令人讨厌的语法。这是一个例子:
@DataProvider(name="objectTestData")
public static Object[][] objectTestData() {
return new Object[][] {
{ new TestData("hey", "you", "guys") },
{ new TestData("Sloth", "Baby", "Ruth") },
{ new TestData("foo", "bar", "baz") }
};
}
@Test(dataProvider="objectTestData")
public void testScenario1(TestData data) {
System.out.println(data.get(0) + "..." + data.get(1) + "..." + data.get(2));
}
static class TestData {
public String[] items;
public TestData(String... items) {
this.items = items; // should probably make a defensive copy
}
public String get(int x) {
return items[x];
}
}
或者,您可以更改TestData构造函数,将内容放入单独的命名方法中。(例如,如果您正在测试地址数据,则可能有getName、getAddress、getCity。)
可以将dataprovider设置为对象数组并使用ArrayList
@DataProvider
public Object[][] getTestData()
{
List<HashMap<String, String>> arrayMapList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> hashMapItems = new HashMap<String, String>();
//use a loop to fill in all the parameter name and value pairs
hashMapItems.put("parameterName1", "parameterValue");
hashMapItems.put("parameterName2", "parameterValue");
//--------------More put statements here------
//finally add hash map to the list
arrayMapList.add(hashMapItems);
//Iterate the array list and store each HashMap object in an object array. First dimension is the iterator value.
Object [][] hashMapObj = new Object [arrayMapList.size()][1];
for(int i=0; i<arrayMapList.size() ; i++) {
hashMapObj[i][0] = arrayMapList(i);
}
return hashMapObj;
}
对于数组列表中的每个hashmap值,测试方法将使用自己的一组参数运行
@Test (dataProvider = "getTestData", enabled = true)
public void testDataRead(HashMap<String,String> hashMapValue)
{
System.out.println(hashMapValue.get(parameterNameKey)); //parameter 1
System.out.println(hashMapValue.get(parameterNameKey)); //parameter 2
}
如果有相同类型的参数,则可以在方法参数中作为数组传递。
@Test (dataProvider = "Dataprovider1")
public void testScenario1(String args [])
) throws Exception {
System.out.println(args[0]+"---------------- "+args[1]+" --------------- "+args[3]+" .. so on");
}
此外,如果您有不同类型的参数字段,那么您可以在助手类的帮助下将其固定,然后在参数中传递此类的引用。e、 g:
class Helper {
String data1;
String data2;
String data3;
Long data4;
int data5;
flot data6;
-----so on------
----getter setter and constructor----
}
您的测试类
class Test {
@DataProvider(name="Dataprovider1")
public static Object[][] testData() {
return new Object[][] {
{ new Helper("hey", "you", "guys" ..... another constructor parameters..) } }
};
}
@Test (dataProvider = "Dataprovider1")
public void testScenario1(Helper helper) throws Exception {
System.out.println(helper.data1+"---------------- "+helper.data2+" --------------- "+helper.data3+" .. so on");
}
}
我在onCreate中创建的SQLite数据库中有三个表。我没有数据记录,只需要查询表进行计算并显示在屏幕上。这是我需要做的sql来获取我需要的3个变量。sql只返回一条记录不是列表。 Rawquery研究并认为这是最好的解决方案,但不知道如何运行sql,当我将这些参数传递给sql并获得我需要的三个变量时,是否有人能向我详细解释一下,以便我能够理解并应用到这里?
我正在尝试安装一个带有特殊选项的NPM软件包,它是: 它在Linux上运行良好,但在windows上运行时,我会出现下一个错误 有谁能帮我把它用在Windows10上吗
问题内容: 我在传递带有ajax url的参数时遇到问题。我认为错误在于参数代码语法。请帮助。 我正在按以下方式访问这些参数 问题答案: 为什么要结合GET和POST?使用一个或另一个。 的PHP: 或者,只需正确格式化您的请求即可(您缺少get参数的“&”号)。
问题内容: 我试图弄清楚如何在URL中传递多个参数。我想将纬度和经度从我的android类传递给Java servlet。我怎样才能做到这一点? 在这种情况下,输出(写入文件)为。这是可行的,但我想在两个单独的参数中传递纬度和经度,以便减少在服务器端的工作。如果不可能,我如何至少在&之间添加一个空格,以便可以使用class获取经度和纬度。我试过以下行,但无济于事。 我的servlet代码如下: 我
本文向大家介绍在 mapper 中如何传递多个参数?相关面试题,主要包含被问及在 mapper 中如何传递多个参数?时的应答技巧和注意事项,需要的朋友参考一下 1、第一种: 2、第二种:使用 \@param 注解: 然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给mapper) 3、第三种:多个参数封装成 map
问题内容: 以传统方式添加事件侦听器: 但是我想适应addEventListener的方式: 它不起作用,因为我无法将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名。 任何的想法? 问题答案: 无需传递任何内容。用于的函数将自动绑定到当前元素。只需在您的函数中使用: 如果要将任意数据传递给函数,请将其包装在您