gpt4 book ai didi

java - 创建一个对象以在多个 TestNG 类之间共享数据

转载 作者:行者123 更新时间:2023-12-02 09:32:21 24 4
gpt4 key购买 nike

我已经创建了与对象的以下关系

public class Parent {
//Making API calls to get some data which can be used
//across multiple test classes
}

然后我将测试类继承为

public class Child1 extends Parent {
//I need data collected in Parent class
}

我再次获得二等奖

public class Child2 extends Parent {
//I also need the same data collected in Parent class
}

我的TestNG套件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="e2e-suite" verbose="1">

<test name="e2e tests" preserve-order="true">
<classes>
<class name="com.abc.test.Child1" />
<class name="com.abc.test.Child2" />
</classes>
</test>
</suite>

但是,当我触发测试套件时,我的 Parent 类 API 数据收集逻辑被正确调用,我还获得了可供使用它的第一类直接使用的数据,即 Child1

但是,对于 Child2 类,父类逻辑不会再次被调用(即使我不希望它再次执行)。问题是我在 Parent 类中收集的数据如何在其他 Child 对象(如 Child2)之间共享和持久化。

目前,我使用static父类字段来共享数据。我正在寻找一些实现,它可以允许我将数据从父类存储到另一个对象,该对象可以在所有子测试对象中使用(如果有任何其他更好的方法将父类中收集的数据共享到以后的测试类也可以)我)

最佳答案

//调用API获取一些可以使用的数据 //跨多个测试类

private String config1;
private String config2;

public Parent() {
this.instance = getInstance();
}

private Parent(String config1, String config2) {
this.config1 = config1;
this.config2 = config2;

}

private static Parent instance = null;

public static Parent getInstance() {
if (instance == null) {
synchronized (Parent.class) {
if (instance == null) {
instance = new Parent("SingleTonConfig1", "SingleTonConfig2");
}
}
}
return instance;
}

public String getConfig1() {
return config1;
}

public void setConfig1(String config1) {
this.config1 = config1;
}

public String getConfig2() {
return config2;
}

public void setConfig2(String config2) {
this.config2 = config2;
}

}

导入com.demo.config.Parent;

公共(public)类 Child1 扩展 Parent {

private String Child1Config1;
private String Child1Config2;

public Child1(String child1Config1, String child1Config2) {
super();
Child1Config1 = child1Config1;
Child1Config2 = child1Config2;
}

}

公共(public)类 Child2 扩展 Parent {

private String Child2Config1;
private String Child2Config2;

public Child2(String child2Config1, String child2Config2) {
super();
Child2Config1 = child2Config1;
Child2Config2 = child2Config2;
}

}

public static void main(String[] args) {
Child1 c1 = new Child1("child1Config1", "child1Config2");
Child1 c11 = new Child1("child1Config11", "child1Config22");

Child1 c2 = new Child1("child2Config1", "child2Config2");
Child1 c22 = new Child1("child2Config11", "child2Config22");

System.out.println("Parent object c1- config1" + c1.getInstance().getConfig1());

System.out.println("Parent object c1- config2" + c1.getInstance().getConfig2());

System.out.println("Parent object c11- config1" + c11.getInstance().getConfig1());

System.out.println("Parent object c11- config2" + c11.getInstance().getConfig2());

System.out.println("Parent object c2- config1" + c2.getInstance().getConfig1());

System.out.println("Parent object c2- config2" + c2.getInstance().getConfig2());

System.out.println("Parent object c22- config1" + c22.getInstance().getConfig1());

System.out.println("Parent object c22- config2" + c22.getInstance().getConfig2());

System.out.println("Parent Object c1- parentInstance: " + c1.getInstance());

System.out.println("Parent Object c11- parentInstance: " + c11.getInstance());

System.out.println("Parent Object c2- parentInstance: " + c2.getInstance());

System.out.println("Parent Object c22- parentInstance: " + c22.getInstance());
}

}

当您运行上面的 main 方法时,您将看到该对象自其单例以来始终保持不变。但是我们必须授予对一个公共(public)构造函数的访问权限,我们将在其中实例化该对象。实例化实例的方法有多种,例如急切初始化、静态 block 初始化和延迟初始化。

关于java - 创建一个对象以在多个 TestNG 类之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57858955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com