在不同的测试中使用相同的字符串时出错

Error when using the same string in different tests

我有以下场景: 我在 Selenium Webdriver Java.

中执行了几个测试 (@Test) 和 Cucumber 测试

测试进行得很顺利。 但是,我想将存储在一个@Test (public void) 中的字符串保留在另一个@Test (public void) 中。我不能。

有人能帮忙吗?

第一次测试:

@Test
public void testDocuments() {
     OneClass oneClass = new OneClass();
     oneClass.one();
     oneClass.two();
}

第二次测试:

@Test
public void testDocuments() {
     OneClass oneClass = new OneClass();
     oneClass.one();
     oneClass.two();
}

方法一

public String one() {
        if (this.cnpj == null) {
            this.cnpj = add.cnpj(false);
        } else {
        }
        return this.cnpj;
    }

两个测试我希望你使用相同的生成字符串!!!!

期待并提前致谢!

如果我理解正确,您需要 this.cnpj 值才能在第二次测试中可用? 每次你做 new OneClass() ,它都会创建一个 new 它的实例。

因此您可以执行以下操作之一:

  • 使用单例实例OneClass
  • OneClass
  • 中创建 cnpj 一个 static 字段

我不确定你的方法 one() 做了什么,但假设你想对两个不同的测试使用相同的值,为什么不这样做:

OneClass oneClass = new OneClass();
String yourGeneratedString = oneClass.one();  

// First test

@Test
public void testDocuments() {
     yourFunction(yourGeneratedString);
}

// Second test

@Test
public void testDocuments2() {
     yourOtherFunction(yourGeneratedString);
}

如果我没理解错的话,你想共享从一个测试到第二个测试的数据。如果你使用 testNG 那么你可以这样做。

import org.testng.ITestContext;
import org.testng.annotations.Test;

public class MyTest {

  @Test
  public void testOne(ITestContext context){
    context.setAttribute("myKey", "myValue");
  }

  @Test
  public void testTwo(ITestContext context){
    String valueFromTestOne = (String) context.getAttribute("myKey");
    System.out.println("My key = " + valueFromTestOne);
  }
}