让我们说我有一个方法来定义和赋值给变量。我想以某种方式能够在另一个方法中使用该变量及其值。
我不想将变量作为参数传递,因为我正在运行selenium测试,并且有多个测试方法依赖于那个方法 - 这意味着它只会在其中一个测试方法中执行(这取决于它)被执行。
我尝试使用访问器/ mutators将id分配给类变量,但它似乎不起作用
e.g
String mainId;
public void setID(String s) {
mainId = s;
}
public String getID() {
return mainId;
}
@Test
public void doSomething() {
String numeric = this.randomNumeric();
String id = "D1234" + numeric;
this.setID(id);
... // do something with that id number
}
@Test (dependsOnMethod = {"doSomething"})
public void somethingA() {
...sendKeys(this.getID()); // do something with that id - e.g search the database to see if that id was added correctly
}
@Test (dependsOnMethod = {"doSomething"})
public void somethingB() {
... // do something else with that id
}
答案 0 :(得分:2)
为了在@Test
方法之间共享逻辑/变量,您可以使用注释为@Before
的实例方法,该方法将在每个@Test
方法之前调用一次,或者使用静态方法注释使用@BeforeClass
,在任何@Test
方法运行之前,它将仅对整个测试类调用一次。
在您的方案中,假设您需要生成一次mainId
值并在多个@Test
方法中重复使用相同的值,则需要使用@BeforeClass
并将值存储为静态变量,如下所示:
private static String mainId;
@BeforeClass
public static void init() { //must be public static void
String numeric = randomNumeric();
mainId = "D1234" + numeric;
}
@Test
public void somethingA() {
//use mainId (note that it belongs to class, not this instance)
//...
}
//other tests...
请注意,将mainId
和doSomething
逻辑更改为静态时,您需要将randomNumeric
方法更改为静态。