java - TestNG:一个@Test 有多个@DataProvider

标签 java testing automated-tests testng dataprovider

我正在为 Eclipse 使用 TestNG

是否可以逐步将两个数据提供者提供给相同的测试功能?

我可以将两个提供商合二为一,但这不是我想要的。

我需要(不像本例那样)独立生成数据。

@DataProvider(name = "dataSet1")
public Object[][] createDataX() {
    return new Object[][] { { 1, 1 }, { 2, 2 } };
}

@DataProvider(name = "dataSet2")
public Object[][] createDataY() {
    return new Object[][] { { 0, 0 }, { 3, 3 } };
}

我想让两个提供者都接受相同的测试。这可能吗?

@Test(dataProvider = "dataSet1") // ??? and "dataSet2" ???
public void testThisFunction(int val1, int val2) {
    boolean solution = oracle(val1,val2);
    assert (solution);
}

最佳答案

不,但没有什么能阻止您将这两个数据提供者合并为一个并将其指定为您的数据提供者:

public Object[][] dp1() {
  return new Object[][] {
      new Object[] { "a", "b" },
      new Object[] { "c", "d" },
  };
}

public Object[][] dp2() {
  return new Object[][] {
      new Object[] { "e", "f" },
      new Object[] { "g", "h" },
  };
}

@DataProvider
public Object[][] dp() {
  List<Object[]> result = Lists.newArrayList();
  result.addAll(Arrays.asList(dp1()));
  result.addAll(Arrays.asList(dp2()));
  return result.toArray(new Object[result.size()][]);
}

@Test(dataProvider = "dp")
public void f(String a, String b) {
  System.out.println("f " + a + " " + b);
}

关于java - TestNG:一个@Test 有多个@DataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10832422/

相关文章:

selenium - Robot Framework - Selenium2Library - 使用 Edge 浏览器选择文件关键字

firefox - 如何通过 Firefox 浏览器自动进行功能测试?

java - Rabin-Karp 滚动哈希

java - 在Ubuntu 11.10上的hadoop 0.23.0 java中的classpath问题

java - 从字符到字节的转换

testing - 测试 Teamviewer ID 列表中的弱密码

ruby - 如何在 env.rb 或 hook.rb 中创建变量并调用 cucumber 功能?

jar 中的 java.lang.RuntimeException : Error scanning entry module-info. 类

android - 如何在不破坏手机的情况下测试我的自定义内核?

c# - 实现 JavaScript 代码与控制台应用程序 C# 之间的通信