我有一个场景需要在@Test方法中生成一个关键的第一行。我需要提供通用解决方案来实现这一目标。我们已经有了生成令牌的自定义类文件,它应该在@Test方法中生成。
截至目前,我们在所有@Test方法中都有以下代码行。它似乎是重复的,并希望给出一些通用的解决方案。我们想创建一个监听器,它将在@Test方法进行后执行,并在执行该方法中实际存在的第一行代码之前执行。
以下是代码:
@Test
public void getSearchMach()
{
//The AutoKeyGenerator is a class which has getKey() method and return
//type as String
String getkey=AutoKeyGenerator.getKey();
//Some logic will go here.
}
上述行应放在所有测试方法的第一行。我不想在任何地方重复,并创建一个听众,它将以聪明的方式做同样的活动。像一个监听器将执行该行,然后执行剩余的行。我已经使用了@BeforeMethod和@BeforeClass,以及@BeforeSuite,它们无效并将null作为字符串值返回。
答案 0 :(得分:0)
我们可以在类中声明变量为static。以下是代码段:
public class Testing {
static String getKey;
@BeforeTest
public void set() {
getKey = getKeyNow();
}
private String getKeyNow() {
// Do Something
return "Hi There";
}
@Test
public void test1() {
System.out.println(getKey);
assertEquals(1, 1);
}
}
如果这解决了这个问题,请告诉我。
答案 1 :(得分:0)
您可以通过扩展TestListenerAdapter并覆盖onTestStart方法来创建结果侦听器,该方法是“每次调用测试之前都会调用。”
public class TestResultsListener extends TestListenerAdapter {
@Override
public void onTestStart(final ITestResult tr) {
String getkey=AutoKeyGenerator.getKey();
//Some logic will go here.
}
}