看看TestNG 工厂。例如
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Iterator;
public class DemoTest {
private final String url;
@Factory(dataProvider = "urls", dataProviderClass = xxx.class)
public DemoTest(String url) {
this.url = url;
}
@Test(dataProvider = "someData", dataProviderClass = DemoTest.xxx.class)
public void something(int a, int b) {
System.out.println(String.format("%s, %d, %d", url, a, b));
}
@Test(dataProvider = "someOtherData", dataProviderClass = DemoTest.xxx.class)
public void somethingElse(int a, int b) {
System.out.println(String.format("%s, %d, %d", url, a, b));
}
public static class xxx {
@DataProvider
public static Iterator<Object[]> urls() {
String[] urls = {
"https://www.google.com/",
"https://inbox.google.com/",
"https://calendar.google.com/",
"https://drive.google.com/"
};
return Arrays.stream(urls)
.map(s -> new Object[]{s})
.iterator();
}
@DataProvider
public static Object[][] someData() {
return new Object[][]{
{1, 2},
{3, 4}
};
}
@DataProvider
public static Object[][] someOtherData() {
return new Object[][]{
{4, 3},
{2, 1}
};
}
}
}
示例输出:
https://calendar.google.com/, 1, 2
https://calendar.google.com/, 3, 4
https://inbox.google.com/, 1, 2
https://inbox.google.com/, 3, 4
https://drive.google.com/, 1, 2
https://drive.google.com/, 3, 4
https://www.google.com/, 1, 2
https://www.google.com/, 3, 4
https://calendar.google.com/, 4, 3
https://calendar.google.com/, 2, 1
https://inbox.google.com/, 4, 3
https://inbox.google.com/, 2, 1
https://drive.google.com/, 4, 3
https://drive.google.com/, 2, 1
https://www.google.com/, 4, 3
https://www.google.com/, 2, 1