Enhancement: Reliable combination of @Parameters and @DataProvider
Currently, TestNG does not reliably combine @Parameters (from XML) and @DataProvider in all contexts, especially when using:
- Multiple classes in
or - Parallel execution (thread-count > 1)
This causes Data provider mismatch errors even when the method signature and DataProvider are correct.
A suggested enhancement is for TestNG to consistently merge XML parameters with DataProvider values in all contexts, similar to how
Code used -
@Parameters("URI")
@Test(dataProvider ="getData")
public void testDemo(String url, String uname, String pass) {
System.out.println("Test Demo");
System.out.println(url);
System.out.println(uname + " " + pass);
}
@DataProvider
public Object[][] getData() {
Object[][] data = new Object [3] [2];
data [0][0] = "firstUser";
data [0][1] = "firstPass";
data [1][0] = "SecondUser";
data [1][1] = "SecondPass";
data [2][0] = "ThirdUser";
data [2][1] = "ThirdPass";
return data;
}
Attached testng report & testng4.xml
What is the used version?
Did you try something like this:
@Test(dataProvider ="getData")
public void testDemo(String url, String uname, String pass) {
System.out.println("Test Demo");
System.out.println(url);
System.out.println(uname + " " + pass);
}
@Parameters("URI")
@DataProvider
public Object[][] getData(String url) {
Object[][] data = new Object [3] [3];
data [0][0] = url;
data [0][1] = "firstUser";
data [0][2] = "firstPass";
data [1][0] = url;
data [1][1] = "SecondUser";
data [1][2] = "SecondPass";
data [2][0] = url;
data [2][1] = "ThirdUser";
data [2][2] = "ThirdPass";
return data;
}
Hi juherr, TestNG Version: 7.11.0 Execution Context: [RemoteTestNG] detected during run
@Test(dataProvider ="getData")
public void testDemo(String url, String uname, String pass) {
System.out.println("Test Demo");
System.out.println(url);
System.out.println(uname + " " + pass);
@Parameters("URI")
@DataProvider
public Object[][] getData(String url) {
Object[][] data = new Object [3] [3];
data [0][0] = url;
data [0][0] = "firstUser";
data [0][1] = "firstPass";
data [1][0] = url;
data [1][0] = "SecondUser";
data [1][1] = "SecondPass";
data [2][0] = url;
data [2][0] = "ThirdUser";
data [2][1] = "ThirdPass";
return data;
}
still not working & getting org.testng.TestNGException: Some DataProvider public java.lang.Object[][] test.Login.getData(java.lang.String) parameters unresolved: at 0 type class java.lang.String
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)