当前位置: 首页 > 知识库问答 >
问题:

使用@factory运行dependentestng方法

水焱
2023-03-14

方案:-

我的测试数据是1)字符串A 2)字符串B 3)字符串C

现在我有了一个类,其中有数据提供者和工厂,数据提供者有3个值作为字符串

public class TestParent {

    public String tenant;

    @Factory(dataProvider = "myList")
    public TestParent(String s) {
        tenant = s;
    }

    @DataProvider(name = "myList")
    public Object[][] myList() {
        List<String> s = new ArrayList<String>();
        s.add("A");
        s.add("B");
        s.add("C");
        Object[][] objArray = new Object[s.size()][];

        for (int i = 0; i < s.size(); i++) {
            objArray[i] = new Object[1];
            objArray[i][0] = s.get(i);
        }
        return objArray;
    }

    @Test()
    public void setup() {
        System.out.print(tenant);
        System.out.print("\n");
    }

    @Test(dependsonMethod = setup)
    public void beforeclass() {
        System.out.print("Hello");
        System.out.print(tenant);
        System.out.print("\n");
    }

    @Test(dependsonMethod = beforeclass)
    public void afterclass() {
        System.out.print("BYE");
        System.out.print(tenant);
        System.out.print("\n");
    }

    @Test(dependsonMethod = afterclass)
    public void mm() {
        System.out.print("YES");
        System.out.print(tenant);
        System.out.print("\n");
    }
}

我想要的输出

A
HelloA
BYEA
YESA
B
HelloB
BYEB
YESB
C
HelloC
BYEC
YESC

共有1个答案

杜霍英
2023-03-14

创建两个单独的类FactoryClass和TestDataClass,然后从textng运行FactoryClass。xml

FactoryClass:

public class FactoryClass {

    @Factory(dataProvider = "myList")
    public Object[] createInstances(String str) {
        return new Object[] {new TestData(str)};
    }

    @DataProvider(name = "myList")
    static public Object[][] myList(){
     return new Object[][] {
        new Object[] { new String("A") },
        new Object[] { new String("B") },
      };
    }
} 

TestDataClass:

public class TestData {

    private String tenant;

    public TestData(String s)
    {
        this.tenant=s;
    }

    @Test()
    public void setup( )
    {
        System.out.print(tenant);
        System.out.print("\n");
    }

    @Test(dependsOnMethods="setup")
    public void beforeclass()
    {
        System.out.print("Hello");
        System.out.print(tenant);
        System.out.print("\n");

    }

    @Test(dependsOnMethods="beforeclass")
    public  void afterclass()
    {
        System.out.print("BYE");
        System.out.print(tenant);
        System.out.print("\n");
    }

    @Test(dependsOnMethods="afterclass")
    public  void mm()
    {
        System.out.print("YES");
        System.out.print(tenant);
        System.out.print("\n");

    }

}

XML文件:

<suite name="StackNew" verbose="1">
<test name="test" group-by-instances="true">
    <classes>
        <class name="stack.FactoryClass"></class>
    </classes>
</test>
</suite>

如果您面临序列问题:链接

 类似资料:
  • 我目前正在对工厂设计模式进行一些研究,并列出了我对每种模式的理解的简要描述。如果有不正确的地方,请纠正我。 1) 工厂——简单,实际上不是正式的设计模式,通常是一个类,它有一个或多个方法(有时是静态的)接受一个参数,以确定要返回哪个抽象类型的子类。 2) 工厂方法——正式的模式,使用抽象工厂类。对于预期退货类型的每个产品,创建一个关联的factory类,并实现或重写所需的方法。在客户机代码中,虽然

  • 本文向大家介绍简介AngularJS中使用factory和service的方法,包括了简介AngularJS中使用factory和service的方法的使用技巧和注意事项,需要的朋友参考一下  AngularJS支持使用服务的体系结构“关注点分离”的概念。服务是JavaScript函数,并负责只做一个特定的任务。这也使得他们即维护和测试的单独实体。控制器,过滤器可以调用它们作为需求的基础。服务使用

  • 问题内容: 我想通过gradle任务运行我的方法 这是我通过cmd运行的方式: 应该如何写成gradle? 更新资料 我努力了 我得到: 我得到一个错误: 但是当我通过Intellij运行时,每个thig都可以正常工作 问题答案: 最简单的方法可能是使用应用程序插件。添加到您的build.gradle并设置。要将参数添加到主类,请修改运行任务并编辑args属性 类路径是从主sourceSet中自动

  • 共设5个测试班。每一个都使用@Factory(dataprovider=“data”)初始化。我想实现的是,每个测试类中的测试方法应该与dataprovider实例并行运行。此外,测试类应该并行运行。 如下所示。TestClass1应该并行运行dataprovider实例。因此,测试类TestClass1的所有方法将为dataprovider实例并行运行。 data-provider-thread

  • 本文向大家介绍使用 docker-compose 运行 MySQL的方法,包括了使用 docker-compose 运行 MySQL的方法的使用技巧和注意事项,需要的朋友参考一下 目录结构 mysql 目录下的 data 为数据目录,mysql 的数据表、二进制日志文件就在这里。.env 文件包含了一些变量,这些变量可以在 docker-compose.yml 文件中通过 ${variable_n

  • 早些时候,在jQuery中编写自定义控件的唯一方法是扩展$.fn命名空间。 这适用于简单的小部件。 假设您构建了更多有状态的小部件,它很快变得很麻烦。 为了帮助构建小部件,Widget Factory在jQuery UI中引入,它删除了通常与管理小部件相关的大部分样板。 jQueryUI Widget Factory只是一个函数($ .widget),它将字符串名称和对象作为参数,并创建一个jQu