答案 0 :(得分:1)
为什么使用仅有1列的二维数组无法做同样的事情。你有什么具体要求吗?像这样的东西
@Test(dataProvider = "getNames")
public void test01(Name name) {
System.out.println(name.name + " " + name.id);
}
@DataProvider
public Object[][] getNames() {
Name[][] result = new Name[2][1];
result[0][0] = new Name("john", 5);
result[1][0] = new Name("doe", 4);
return result;
}
我测试了你的代码,我建议它的工作正常。
答案 1 :(得分:0)
将其更改为
@DataProvider
public Name[][] getNames() {
Name[][] result = new Name[2][];
result[0] = {new Name("john", 5)};
result[1] = {new Name("doe", 4)};
return result;
}
答案 2 :(得分:0)
我不知道为什么你使用一个专门的类来保存所有属性,但你应该考虑这样的事情:
public class FirstTestClass {
@Test(dataProvider = "getNames")
public void test01(String name, Integer id) {
System.out.println(name + " " + id);
}
@DataProvider
public Object[][] getNames() {
return new Object[][] {
new Object[] { "john", 5 },
new Object[] { "doe", 4 }
}
}
}
答案 3 :(得分:0)
在JUnit 4.x中,以下是实现上述方案的方法。
status=$(curl -I https://example.com/health_check.jsp 2> /dev/null | head -n 1 | cut -d ' ' -f 2)
if [[ $status = "200" ]]; then
echo 0
else
echo 1
fi
我希望在TestNG中有类似的东西,我被告知它比JUnit更灵活,更强大。事实证明,我们只返回@DataProvider方法中的Object [] []。
答案 4 :(得分:0)
我现在理解你的问题,你想要一个TestNG翻译:
@RunWith(Parameterized.class)
public class FirstTest {
private LoginCredentials loginData;
public FirstTest(LoginCredentials testData) {
loginData = testData;
}
@Parameterized.Parameters
public static LoginCredentials[] generateTestData() {
return ReadingExcelSheets.generateTestData();
}
}
解决方案可能是:
public class FirstTest {
private final LoginCredentials loginData;
@Factory(dataprovider = "generateTestData")
public FirstTest(LoginCredentials testData) {
loginData = testData;
}
@Test
public void test01() {
System.out.println(loginData);
}
@DataProvider
public static Object[][] generateTestData() {
return convert(ReadingExcelSheets.generateTestData());
}
public static Object[][] convert(LoginCredentials[] values) {
Object[][] result = new Object[values.length];
for (int i=0; i<result.length; i++) {
result[i] = new Object[]{ values[i] };
}
return result;
}
}
或者
public class FirstTest {
@Test(dataprovider = "generateTestData")
public void test01(LoginCredentials loginData) {
System.out.println(loginData);
}
@DataProvider
public static Object[][] generateTestData() {
return convert(ReadingExcelSheets.generateTestData());
}
public static Object[][] convert(LoginCredentials[] values) {
Object[][] result = new Object[values.length];
for (int i=0; i<result.length; i++) {
result[i] = new Object[]{ values[i] };
}
return result;
}
}
但是好的,TestNG可以提供convert
方法本身和/或管理Object[]
作为开箱即用的有效返回类型。
随意在http://github.com/cbeust/testng上提出补丁 随时欢迎帮助:)