Java 为什么要使用@BeforeSuite这样的TestNG注释,而监听器也是这样做的?

Java 为什么要使用@BeforeSuite这样的TestNG注释,而监听器也是这样做的?,java,annotations,testng,listener,Java,Annotations,Testng,Listener,我总是在测试中使用TestNG注释,如@BeforeSuite、@BeforeClass等。 但是最近,我一直在阅读关于TestNG监听器的文章,我情不自禁地感觉到这些监听器提供的大多数方法都与一些注释做完全相同的事情 例如: @BeforeSuite似乎与ISuiteListener.onStart()相同 @BeforeMethod似乎与IInvokedMethodListener.beforeInvocation()相同 那么,为什么我们有这些方法可以做几乎相同的事情呢?这些方法是用于运行

我总是在测试中使用TestNG注释,如@BeforeSuite、@BeforeClass等。
但是最近,我一直在阅读关于TestNG监听器的文章,我情不自禁地感觉到这些监听器提供的大多数方法都与一些注释做完全相同的事情

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


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

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

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

例如,如果您希望在中使用不同的配置

@预处理法

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

同样适用于,即不同类的不同配置,而不是通用配置

@课前

希望它能回答你的问题