自定义侦听器,它总是在TestNG中的@Test注释中执行

时间:2018-02-12 06:52:47

标签: java selenium testng

我有一个场景需要在@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作为字符串值返回。

2 个答案:

答案 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.
}

}