如何将@AfterClass方法中的ITestNGMethod作为参数传递?

如何将@AfterClass方法中的ITestNGMethod作为参数传递?,testng,Testng,我试图知道在@Test(Test方法)被调用之后,@AfterClass被调用。因此,我编写了以下代码来实现这一点: @AfterClass(alwaysRun = true) public synchronized void tearDownClass(final ITestNGMethod itx) { final Method m = itx.getConstructorOrMethod().getMethod(); System.out.println(m.getName

我试图知道在@Test(Test方法)被调用之后,@AfterClass被调用。因此,我编写了以下代码来实现这一点:

@AfterClass(alwaysRun = true)
  public synchronized void tearDownClass(final ITestNGMethod itx) {

  final Method m = itx.getConstructorOrMethod().getMethod();

  System.out.println(m.getName());

}
但是testNG抛出以下错误: 方法tearDownClass需要1个参数,但@Configuration注释中提供了0。

所以我的问题是如何解决上述问题,或者是否有其他方法来实现这一点


提前感谢。

它不能工作,因为
ITestNGMethod
表示一个方法,而一个类可以有很多方法


您可以将
ITestContext
注入,并在其中查找您的方法。

它无法工作,因为
ITestNGMethod
表示一个方法,而一个类可以有许多方法


您可以将
ITestContext
注入,并在其中查找您的方法。

这没有意义:它是一个
@AfterClass
方法,在类的所有测试方法运行后调用。您的特定场景(希望知道最后调用的方法)非常具体,因此您应该自己实现它


例如,您可以创建一个字段
lastMethod
,并让每个方法将其设置为其名称,这样当您到达
@AfterClass
时,您就可以知道哪一个最后运行。

这没有意义:它是一个
@AfterClass
方法,在类的所有测试方法运行之后调用它。您的特定场景(希望知道最后调用的方法)非常具体,因此您应该自己实现它


例如,您可以创建一个字段
lastMethod
,并让每个方法使用其名称进行设置,这样当您到达
@AfterClass
时,您就可以知道哪一个最后运行。

因此,如果我使用ITestContext,它会给出所有的“@testmethods”。但没有找到任何方法可以提供诸如@Test method、当前的@AfterClass方法执行之后的详细信息。如果我的问题不清楚,请告诉我,以便我提供示例代码进行解释。如果我理解得很好,您想要类的最后一个执行的方法?因此,如果我使用ITestContext,它将提供所有的“@Test methods”。但没有找到任何方法可以提供诸如@Test method、当前的@AfterClass方法执行之后的详细信息。如果我的问题不清楚,请告诉我,以便我可以提供示例代码进行解释。如果我理解得很好,您希望类的最后一个执行的方法?按照指示实现,并且它工作得很好。谢谢@Cedric.你抓住我了!这正是我的建议!按照指示执行,它就像一个符咒。谢谢@Cedric.你抓住我了!这正是我的建议!