当侦听器具有相同的作用时,为什么还要使用@BeforeSuite之类的TestNG注释?

时间:2018-07-26 09:16:20

标签: java annotations testng listener

我在测试中一直使用@@ BeforeSuite,@ BeforeClass等TestNG注释。
但是最近,我一直在阅读有关TestNG侦听器的信息,我不禁感到这些侦听器提供的大多数方法与某些批注完全一样。

例如:
@BeforeSuite似乎与ISuiteListener.onStart()
相同 @BeforeMethod似乎与IInvokedMethodListener.beforeInvocation()相同。

那么,为什么我们有这些方法几乎可以完成相同的事情?

2 个答案:

答案 0 :(得分:0)

这些方法旨在由运行测试的环境使用,而不是由测试本身使用。例如,IDE可以添加ISuiteListener并更新运行GUI中显示的测试的状态。

答案 1 :(得分:0)

它们仅用于自定义所有级别的配置,例如BeforeMethod,Class等。

例如,如果要在

中进行其他配置
  

@BeforeMethod

对于不同的类,那么您将在每个类中使用@BeforeMethod,并进行一些不同的配置,该配置将仅限于该类及其方法,而不是整个套件中的所有方法或测试。 如果您在侦听器中使用它,那么它将是所有类和方法所共有的。 通常,侦听器批注用于执行所有类和方法所需的通用功能。 例如,在测试开始或套件开始时开始记录日志,在测试用例结束时捕获屏幕截图等。

相同,即不同类别的配置不同,而不是通用配置。

  

@BeforeClass

希望它可以回答您的问题。