当前位置: 首页 > 面试题库 >

TestNG:一个@Test的多个@DataProvider

刘绍晖
2023-03-14
问题内容

我使用TestNGEclipse

是否可以将两个数据提供程序逐步赋予 相同的 测试功能?

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

我需要(与本示例不同)独立生成数据。

@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="ListOfObject")注释方法。它为方法提供了大约20行数据。(因此该方法运行了20次。)现在,我想运行这个类2小时(SOAK相关测试的一部分。)平均而言,该类单次运行大约需要10分钟。所以我正在考虑或运行整个类12次,因此考虑在类本身使用@Test(encocationCount=20)。有

  • 本文向大家介绍如何在TestNG中将多个组合并为单个Test?,包括了如何在TestNG中将多个组合并为单个Test?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助测试组功能将多个组组合到TestNG中的单个Test中。 示例 用组测试xml文件。 要从测试用例集合中运行一组测试用例,我们必须在testng xml文件中定义<groups>。在这里,testNG xml包含与单个Test相

  • 我有一个包含两种测试方法的testng套件。createuser()和updateuser()。我还有一个实例变量User User;因此,在createUser()的末尾,我将创建的用户与实例变量user关联起来。现在,在updateUSer()(依赖于Createuser)中,我尝试更新这个对象的一些属性。 一切正常运行。但是当我使用invocationcount=3,threadpoolsi

  • 问题内容: 我一直在寻找一种在测试方法中使用多个DataProvider的方法。我的情况如下: 假设我们有一个DataProvider类: 现在,在我的Test方法中,我要针对方案的所有组合运行: 绿广场 红方格 绿三角 红三角 鉴于我无法使用注释指定多个DataProvider,因此应如何在代码中实现此目标 问题答案: 由于缺乏更好的方法,我决定坚持解决方法。这是如何实现上述方案的示例: 这样,

  • 我有一系列TestNG测试,它们使用数据提供者作为一系列参数运行。 我的跑步者看起来像这样: 假设我从Dataprovider获得了两个参数(param1和param2),测试将按以下顺序执行: 有没有办法让它每个参数运行所有测试用例。i、 e.执行应如下所示: test1与param1 test2与param1 test1与param2 test2与param2

  • 我需要在一次测试中执行所有3个类,并满足以下要求: > 仅从Class1执行test1和test3。 仅从Class2执行test2。 执行Class3中的所有测试。 2类 3类 为此,我使用了以下testNg xml,但无论我是否包含该组,都将执行Class 1和Class 3中的所有测试。 如果我希望执行上述类文件,请建议TestNg xml文件的正确语法。