2 回答
TA贡献1834条经验 获得超8个赞
//进行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;
公共类 Child1 扩展 Parent {
private String Child1Config1;
private String Child1Config2;
public Child1(String child1Config1, String child1Config2) {
super();
Child1Config1 = child1Config1;
Child1Config2 = child1Config2;
}
}
公共类 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 方法时,您将看到该对象自其单例以来始终保持不变。但是我们必须授予对一个公共构造函数的访问权限,我们将在其中实例化该对象。关于如何实例化实例有不同的方法,例如急切初始化、静态块初始化和延迟初始化。
TA贡献1851条经验 获得超5个赞
所以,这是我的测试套件的解释。我有以下具体情况,这对我有很大帮助
TestNg 的 @BeforeTest 在基类上每个固定装置仅发生一次
public class TestBase {
@BeforeTest
public void before() {
System.out.println("BeforeTest");
}
}
public class TestClass extends TestBase {
@Test
public void test1(){}
@Test
public void test2(){}
}
public class TestClass1 extends TestBase {
@Test
public void test3(){}
@Test
public void test4(){}
}
在这里,为我@BeforeTest
扮演一个角色@BeforeSuite
,我也希望这个特定的部分在我的套件的生命周期中只执行一次。第一个问题解决了。
第二个问题:在多个测试类之间共享数据。
设定值:
@Test
public void setvaluetest(ITestContext context) {
String customerId = "GDFg34fDF";
context.setAttribute("customerId", customerId);
}
获取值:
@Test
public void getvaluetest(ITestContext context) {
String id = context.getAttribute("customerId");
}
添加回答
举报